03-1 연산자와 연산식
▶ 연산자 우선순위
거의 헷갈릴 일 없을거고 정 헷갈리면 괄호를 쓰면 됨
03-2 연산자의 종류
▶ 전위 & 후위 연산
전위 : 바로 +or-1
후위 : 해당 라인 다 처리하고 이후에 +or-1
이'전', 이'후'로 기억하면 편함
int x = 5, y = 5;
int a, b;
a = ++x;
b = y--;
System.out.printf("x = %d, y = %d, a = %d, b = %d", x,y,a,b);
// x = 6, y = 4, a = 6, b = 5
▶ 문자열 & 정수의 결합
문자열과 정수의 결합 연산은 + 를 통해서 이뤄짐
※ 주의 - 문자열을 나중에 붙이면 앞에 산수가 된 후에 문자열 결합이 일어남 ※
"JDK" + 3 + 3.0 => "JDK33.0"
3 + 3.0 + "JDK" => "6.0JDK"
▶ 부동 소수점
- 0.1 == 0.1f 은 false이다.
실수의 저장 방식인 '부동 소수점 방식' 때문에 0.1f는 엄밀히
0.10000000149011612 가 되므로 0.1d < 0.1f가 되기 때문이다.
- 부동 소수점 방식에서 문제가 발생하는 이유
자리수가 굉장히 크거나 무한 소수 처리에 있어 적절한 표기를 위해 근사값을 사용하므로 이런 문제가 발생한다.
ex. 컴퓨터로 0.1f는 0.10000000149011612 가 되는데 이를 비트로 표현하면 1100이 무한히 반복된다. (엄청 작은 차이임에도 비트를 많이 사용하므로 낭비) 따라서 적당히 잘라서 근사값을 사용하는 것이다.
- 해결 : BigDecimal
double보다 범위가 2배 이상 길어 더 정밀한 표현이 가능하다.
또한 근사값이 아닌 유효숫자와 수숫점 숫자를 기준으로 표현한다.
참고 : https://8iggy.tistory.com/232
▶ 문자열 비교 연산 (복습)
str1.equals(str2) 처럼 equals( ) 메서드를 사용한다.
리턴 타입은 당연히 boolean.
▶ && vs &
&&는 앞의 피연산자가 false면 뒤의 피연산자는 보지 않고 false 산출
&는 앞의 피연산자가 false여도 뒤의 피연산자 보고 false 산출
마찬가지로,
||는 앞의 피연산자가 true면 뒤의 피연산자는 보지 않고 true 산출
|는 앞의 피연산자가 true여도 뒤의 피연산자 보고 true 산출
▶ 삼항연산자 실습 [ 조건 ? true이면 리턴 : false이면 리턴]
엄청 많이 마주치는 성적 문제를 이렇게 한 줄로 해결할 수도 있다
package sec02.exam11;
import java.util.Scanner;
public class ConditionalOperationExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input;
System.out.print("성적 : ");
int score = Integer.parseInt(scanner.nextLine());
String grade;
grade = (score>=90 ? "A" : (score>=80 ? "B" : (score>=70 ? "C" : "D")));
System.out.println("학점은 "+grade);
}
}
'JAVA > 혼공자' 카테고리의 다른 글
[혼공자] Chapter 05-2 배열 (0) | 2022.07.23 |
---|---|
[혼공자] Chapter 05-1 참조 타입과 변수 (1) | 2022.07.23 |
[혼공자] Chapter 04. 조건문과 반복 (0) | 2022.07.21 |
[혼공자] Chapter 02. 변수와 타입 (0) | 2022.07.20 |
[혼공자] Chapter 01. 자바 (1) | 2022.07.18 |