웹 프로그래밍/JAVA
[JAVA] 연산자
아장아장 초보 개발자
2021. 11. 19. 22:40
728x90
반응형
해당 글은 남궁성님의 자바의 정석을 학습 후에 작성되었습니다.
연산자 : 연산을 수행하는 기호 (+, -, *, /)
피연산자 : 연산자의 연산 수행 대상
모든 연산자는 연산 결과를 반환한다.
연산자의 종류
- 산술 연산자 : 사칙 연산과 나머지 연산
- +, -, *, /, %, <<, >>
- 비교 연산자 : 크고 작음과 같고 다름을 비교
- <, >, <=, >=, ==, !=
- 논리 연산자 : 그리고(AND)와 또는(OR)으로 조건을 연결
- &&, ||, !, &, |, ^, ~
- 대입 연산자 : 우변의 값을 좌변에 저장
- =
- 기타 : 형변환 연산자, 삼항 연산자, instanceof 연산자
- (type), ?:, instanceof
연산자의 우선 순위
- 하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행할 지 자동 결정하는 것
- 먼저 수행하고 싶은 것이 있을 경우 ()를 사용해서 결정할 수 있다.
- 산술 > 비교 > 논리 > 대입 (대입 연산자가 가장 마지막에 수행된다)
- 단항 > 이항 > 삼항 (단항 연산자의 우선 순위가 이항 연산자보다 높다)
- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다
증감 연산자
증가 연산자(++) : 피연산자의 값을 1 증가시킨다
감소 연산자(--) : 피연산자의 값을 1 감소시킨다
전위형 : 값이 참조되기 전에 증가시킨다
int i = 3;
int j = ++i;
--------------
++i;
j = i;
후위형 : 값이 참조된 후에 증가시킨다
int i = 3;
int j = i--;
--------------
j = i;
i++;
증감 연산자가 독립젹으로 사용된 경우, 전위형과 후위형의 차이가 없다
부호 연산자
'-' : 피연산자의 부호를 반대로 변경
'+' : 아무런 일도 하지 않는다 (실제 사용 X)
int i = 10;
i = -i; // i = -10
i = -i; // i = -(-10) = 10
형변환 연산자
변수 또는 상수의 타입을 다른 타입으로 변환하는 것
// (타입)피연산자
double d = 85.4;
int score = (int) d; // score = 85
- int -> char
- (char)65 = 'A' (유니코드에서 65가 'A'이기 때문)
- char -> int
- (int)'A' = 65
- float -> int
- (int)1.6f = 1
- int -> float
- (float)10 = 10.0f
자동 형변환
- 컴파일러가 자동으로 형변환을 해주는 것
Float f = 1234; // int 보다 float가 훨씬 크기 때문에 허용해준다. (형변환을 생략하여 사용) int i = 3.14f // error. float가 int보다 크기 때문에 값이 잘릴 수 있다. // 즉, 값 손실이 발생할 수 있다. 이런 경우 컴파일러가 자동 형변환을 해줄 수 없으므로 수동으로 형변환을 해줘야 한다.
- 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.
사칙 연산자
+, -, *, /
산술 변환
- 연산 전에 피연산자의 타입을 일치시키는 것
- 두 피연산자의 타입을 같게 일치시킨다 (큰 타입으로 일치 시킨다 : 값 손실을 없게 하기 위해)
- long + int -> long + long -> long
- float + int -> float + float -> float
- 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다
- byte + short -> int + int -> int
- char + short -> int + int -> int
- 두 피연산자의 타입을 같게 일치시킨다 (큰 타입으로 일치 시킨다 : 값 손실을 없게 하기 위해)
나머지 연산자 %
오른쪽 피연산자로 나누고 남은 나머지를 반환
int x = 10;
int y = 8;
int r = x % y; // 2
비교 연산자
두 피연산자를 비교해서 true(참) 또는 false(거짓)을 반환
비교연산자 | 연산 결과 |
---|---|
> | 좌변 값이 크면 true 아니면 false |
< | 좌변 값이 작으면 true 아니면 false |
>= | 좌변 값이 크거나 같으면 true 아니면 false |
<= | 좌변 값이 작거나 같으면 true 아니면 false |
== | 두 값이 같으면 true 아니면 false |
!= | 두 값이 다르면 true 아니면 false |
문자열 비교할 경우 == 대신 equals()를 사용해야 한다
논리 연산자
조건식을 연결할 때 사용하는 연산자
- || (OR 결합) : 피연산자 중 어느 한 쪽이 true이면 true를 결과로 얻는다
- &&(AND 결합) : 피연산자 양쪽 모두 true여야 true를 결과로 얻는다
// x는 10보다 크고 20보다 작다
x > 10 && x < 20
// i는 2의 배수 또는 3의 배수이다
i%2==0 || i%3==0
// 문자 ch는 대문자 또는 소문자이다
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
논리 부정 연산자
true를 false로, false는 true로 바꾼다
조건 연산자
조건식의 결과에 따라 연산 결과를 달리한다
int x = 3;
int y = 4;
int result = (x>y) ? x : y; // result = y = 4
대입 연산자
오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환
int x = 3; // x = 3
728x90
반응형