1. 연산자
연산자와 피연산자
- 연산자: 연산을 수행하는 기호
- 피연산자: 연산자의 작업 대상(변수, 상수, 리터럴, 수식)
연산자의 종류
종류 | 연산자 | 설명 |
---|
산술 연산자 | + - * / % << >> | 사칙연산과 나머지 연산(%) |
비교 연산자 | > < >= <= == != | 크고 작음과, 같고 다름을 비교 |
논리 연산자 | && ! & ^ ~ | 그리고(AND)와 또는(OR)으로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
논리 연산자 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof연산자 |
연산자의 우선순위
- 산술>비교>논리>대입. 대입은 제일 마지막에 수행
- 단항(1)>이항(2)>삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽(→)이다.
산술 변환
- 두 연산자의 타입을 갖게 일치 (보다 큰 타입으로 일치)
long + int → long + long → long
float + int → float + float → float
double + float → double + double → double
- 피연산자의 타입이 int보다 작은 타입이면 int로 변환
byte + int → int + int → int
char + short → int + int → int
2. 단항 연산자
- 증가 연산자(++): 피연산자의 값을 1 증가시킴
/*1. 전위형*/
j = ++i;
//증가 후에(++i;), 참조하여 대입(j = i;)
/*2. 후위형*/
j = i++;
//참조하여 대입 후에(j = i;), 증가(i++;)
- 감소 연산자(--): 피연산자의 값을 1 감소시킴
3. 산술 연산자
- 피연산자가 정수형인 경우, 나누는 수로 0을 사용할 수 없다.
- 두 피연산자가 모두 int타입인 경우, 나누기 연산 결과는 int타입이다. int타입은 소수점을 저장하지 못하므로 정수만 남고 소수점 이하는 버려진다.
int a = 10;
int b = 4;
System.out.printf("%d / %d = %d%n", a, b, a / b);
// 10 / 4 = 2 (int / int = int)
- 올바른 연산결과를 얻기 위해서는 두 피연산자 중 어느 한 쪽을 실수형으로 형변환 해야한다.
int a = 10;
int b = 4;
System.out.printf("%d / %f = %f%n", a, (float)b, a / (float)b);
// 10 / 4.000000 = 2.500000 (int / float = float)
4. 비교 연산자
비교연산자 | 연산결과 |
---|
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면, true 아니면 false |
>= | 좌변 값이 크거나 같으면, true 아니면 false |
<= | 좌변 값이 작거나 같으면, true 아니면 false |
== | 두 값이 같으면, true 아니면 false |
!= | 두 값이 다르면, true 아니면 false |
문자열 비교
- equals(): 두 문자열을 비교할 때, 비교 연산자 '==' 대신 사용하는 메서드
equals는 객체가 달라도 내용이 같으면 true를 반환한다.
String str1 = "abc";
String str2 = new String("abc");
System.out.printf("str1.equals(\"abc\")? %b%n", str1.equals("abc"));
System.out.printf("str2.equals(\"abc\")? %b%n", str2.equals("abc"));
//str1.equals("abc")? true
//str2.equals("abc")? true
5. 논리 연산자
논리 연산자
- || (OR 결합): 피연산자 중 어느 한 쪽만 true면 true를 결과로 얻음
- && (AND 결합): 피연산자 양쪽 모두 true이어야 true를 결과로 얻음
- ! (논리 부정 연산자): 피연산자가 true면 false를, false면 true를 결과로 반환
비트 연산자
- | (OR 연산자): 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻음. 그 외에는 0을 얻음
- & (AND 연산자): 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻음. 그 외에는 0을 얻음
- ^ (XOR 연산자): 피연산자의 값이 서로 다를 때만 1을 결과로 얻음. 같을 때는 0을 얻음
- ~ (비트 전환 연산자): 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다.
6. 그 외의 연산자
조건 연산자 ?:
조건식 ? 식1 : 식2
result = (x > y) ? x : y;
x > y 결과가 true이면, 변수 result에는 x의 값이 저장되고, false이면 y의 값이 저장된다.
대입 연산자 = op=
- 대입 연산자: 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용됨
x = y = 3;
y = 3이 먼저 수행되고, 그 다음에 x = y가 수행됨
- 복합대입 연산자 (+=, -=, +=, %= 등)