⭐ 연산시 int보다 작은 정수 타입이면 연산 결과는 int
+와 -
+:부호를 유지
-:부호를 변경
⭐int보다 허용하는 범위가 작은 정수 타입은 연산시 int로 변경
-> int보다 허용하는 범위가 작은 정수 타입에 - 연산자를 사용시 int형이 됨
int x = 10;
int y = 10;
int z;
x++; // 11
++x; // 12
System.out.print(x); // 12 , 변수 단독은 전위 후위 동일
y--; // 9
--y; // 8
System.out.print(y); // 8
z = x++;
System.out.print(z); // 12 , ⭐기존 z = x를 먼저 수행
System.out.print(x); // 13 , x 증가
z = ++x;NaN(Not A Number)은 연산 과정에서 잘못된 입력을 받았음을 나타내는 기호
System.out.print(z); // 14
System.out.print(x); // 14
z = ++x + y++; // x = 15, y = 8
System.out.print(z); // 23
System.out.print(x); // 15
System.out.print(y); // 9, y 증가
오버플로우 : 허용 가능한 최댓값을 넘어간 것
언더플로우 : 허용 가능한 최솟값을 넘어간 것
-> 컴파일 오류가 아닌 각각 최대로, 최소로 넘어감
실수 연산은 정밀도가 제한되어 있어 정확한 값이 안 나올 수도 있음
NaN? Not A Number, 연산 과정에서 잘못된 입력을 받았음을 나타내는 기호
Infinity? 무한대
boolean a = Double.isInfinity(변수);
boolean b = Double.isNaN(변수);
char은 정수형으므로 'A' == 65의 결과는 true
'A'가 int 타입으로 변환되어 비교하기 때문!
3 == 3.0
3이 double 타입으로 변환된 뒤 비교
but! 0.1f와 == 0.1은 false (정밀도 차이)
0.1f와 == (float)0.1로 강제 형 변환 필요
문자는 equals() 메소드 이용
and 논리곱 연산자 (모두 만족해야 true) : & &&
or 논리합 연산자 (한 개 이상 만족하면 true): | ||
XOR 베타적 논리합 연산자 (두 경우가 달라야 true): ^
NOT 논리 부정 연산자 (논리값을 뒤집음) : !
int보다 작은 피연산자를 int로 자동변환 후 연산됨
-> 결과도 int 타입
int 변수명 = Byte.toUnsignedInt(바이트 타입 변수명)
a ' ' n 형태
'>>' : 오른쪽으로 n칸 이동 a X 2^-n 하는 거랑 같음, 왼쪽을 msb 부호로 채움
'<<' : 왼쪽으로 n칸 이동 a X 2^-n 하는 거랑 같음, 오른쪽을 0으로 채움
'>>>' : 오른쪽으로 2칸 이동 a X 2^-n 하는 거랑 같음, 왼쪽을 0으로 채움 (자바에만 존재)4
단순 대입 연산자
복합 대입 연산자
{조건식}?{true일 때 값이나 연산식}:{false일 때 값이나 연산식}
보통적으로 -> 방향으로 진행
()를 통해 우선순위 조정 가능