정수 자료형들과 관련 연산자
자료형 | 크기 | 표현 범위 |
---|
byte | 1바이트 (8비트) | -128 ~ 127 (-2^7 ~ -2^7-1) |
short | 2바이트 | -32,768 ~ 32,767 |
int | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
long | 8바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
byte overByte1 = 127;
byte overByte2 = 128;
byte overByte3 = -128;
byte overByte4 = -129;
- 큰 자료형에 작은 자료형의 값을 넣을 수 있음 = 묵시적(암시적) 형변환
- 작은 자료형에 큰 자료형의 값을 그냥 넣을 수 없음. 들어있는 값의 크기와 무관
byte _1b_byte = 1;
short _2b_short = 2;
int _4b_int = 3;
long _8b_long = 4;
_2b_short = _1b_byte;
_4b_int = _1b_byte;
_4b_int = _2b_short;
_8b_long = _1b_byte;
_1b_byte = _2b_short;
_1b_byte = _4b_int;
_1b_byte = _8b_long;
_2b_short = _4b_int;
형변환(casting)
byte byteNum;
int smallIntNum = 123;
byteNum = (byte) smallIntNum;
int intNum = 12345;
byteNum = (byte) intNum;
이항 연산자
- 좌우의 두 값을 계산한 뒤 결과를 반환
- 부수효과를 일으키지 않음
📌 int
끼리의 연산은 int
를 반환
📌 byte
와 short
의 연산들도 int
를 반환
복합 대입 연산자
a += b | a = a + b |
---|
a -= b | a = a - b |
a *= b | a = a * b |
a /= b | a = a / b |
a %= b | a = a % b |
단항 연산자
연산자 | 반환값 | 부수효과 |
---|
+ | 값 그대로 | 없음 |
- | 양음 반전 | 없음 |
x ++ | 값 그대로 | 1 증가 |
++x | 1 증가한 값 | 1 증가 |
x-- | 값 그대로 | 1 감소 |
--x | 1 감소한 값 | 1 감소 |
++
, --
가 앞에 붙을 경우와 뒤에 붙을 경우의 결과 값이 다르다
- 전위 연산자 : 선증감 후처리
- 후위 연산자 : 선처리 후증감
int x = 1;
System.out.println(x++);
System.out.println(++x);
System.out.println(x);
비교 연산자
비교연산자 | 의미 |
---|
a == b | a와 b는 같다 |
a != b | a와 b는 다르다 |
a > b | a가 b 보다 크다 |
a >= b | a가 b보다 크거나 같다 |
a < b | a가 b보다 작다 |
a <= b | a가 b보다 작거나 같다 |
boolean
자료형의 값을 반환(true
, false
)
int int1 = 3;
int int2 = 3;
boolean bool1 = int1 == int2;
boolean bool2 = int1 != int2;
boolean bool3 = int1 > int2;
boolean bool4 = int1 >= int2;
boolean bool5 = int1 < int2;
boolean bool6 = int1 <= int2;
boolean bool7 = int1 * int2 > int1 + int2;
비트 연산자
: 비트(bit) 단위로 연산
&
: AND , 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다
|
: OR , 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다
^
: XOR , 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다
~
: NOT , 반전 (1을 더한 후 -1을 곱한 것과 같은 결과가 나옴)
<<
: left shift , 왼쪽으로 미는 것
>>
: right shift , 오른쪽으로 미는 것
int x = 5;
int y = 19;
int x_and_y = 5 & 19;
int x_or_y = 5 | 19;
int x_xor_y = 5 ^ 19;
int x_not_y = ~5;
int x_left_y = 5 << 1;
int x_right_y = 5 >> 1;
&
와 |
는 단축 평가를 하지 않음
- 활용
- 홀수, 짝수 구분 :
i % 2 == 1
= i & 1 == 1
→ 비트 연산이 산술 연산보다 빠르다
- swap : 성능 차이가 나지는 않는다

- 비트마스킹
- 태블릿에서 Wi-fi, Pen, Camera, SD Card를 지원하는지 여부를 데이터로 저장해야할 경우
- 1이면 해당 스펙을 갖춘 것

출처 - 인프런 '제대로 파는 자바' 강의