연산자(operater) - 연산을 수행하는 기호 (+ ,- ,* ,/등)
피연산자(operand) - 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)
종류 | 연산자 | 설명 |
---|---|---|
산술 연산자 | + - * / % << >> | 사칙연산(+,-,*,/)과 나머지 연산(%) |
비교 연산자 | > < >= <= == != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | && || ! & | ^ ~ | '그리고(AND)'와 '또는(OR)' 으로 조건을 연결 |
대입 연산자 | = | 우변의 값을 좌변에 저장 |
기타 | (type) ?: instanceof | 형변환 연산자, 삼항 연산자, instanceof연산자 |
증감 연산자(++) 피연산자의 값을 1 증가시킨다.
감소 연산자(--) 피연산자의 값을 1 감소시킨다.
단항 연산자는 피연산자의 왼쪽에 위치하면 '전위형', 오른쪽에 위치하면 '후위형'이라고 한다.
타입 | 설명 | 사용 예 |
---|---|---|
전위형 | 값이 참조되기 전에 증가 시킨다. | J = ++i; |
후위형 | 값이 참조된 후에 증가 시킨다. | J = i++; |
j = ++i;
이 식을 풀어서 쓰면
++i; // 증가 후에
j = i; // 참조하여 대입
이렇게 된다.
j = i++;
후위형은 이 식을 풀어서 쓰면
j = i; // 참조하여 대입 후에
i++; // 증가
이렇게 된다.
산술 연산자는 일반 사칙연산과 비슷해 어렵지 않다.
하지만 주의해야 할 사항들이 있다.
서로 다른 타입간의 연산을 수행해야 하는 경우 연산을 수행하기 전에 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형변환(casting)이라고 한다.
기본형 타입에서 boolean을 제외한 나머지 타입은 서로 형변환이 가능하다.
변환 | 수식 | 결과 |
---|---|---|
int -> char | (char)65 | 'A' |
char -> int | (int)'A' | 65 |
float -> int | (int)1.6f | 1 |
int -> float | (float)10 | 10.0f |
자동 형변환
char i = 128; // char의 저장할 수 있는 최댓값은 127이라 오버플로우가 발생 -> 따라서 i의 값은 -127
char i = -129; // char의 저장할 수 있는 최솟값은 -128이라 오버플로우가 발생 -> 따라서 i의 값은 127
비교 연산자 | 연산결과 |
---|---|
> | 좌변 값이 크면, true 아니면 false |
< | 좌변 값이 작으면, true 아니면 false |
>= | 좌변 값이 크거나 같으면, true 아니면 false |
<= | 좌변 값이 작거나 같으면, true 아니면 false |
== | 두 값이 같으면, true 아니면 false |
!= | 두 값이 다르면, true 아니면 false |
String str = new String("abc"); // String 클래스의 객체를 생성
String str = "abc"; // 위의 문장을 간단히 표현
String은 클래스 이므로 new를 사용해서 객체를 생성해야 하지만 특별히 String만 new 를 사용하지 않고도 쓸 수 있게 허용한다.
|| (OR결합) 피연산자 중 어느 한 쪽만 true 이면 true를 결과로 얻는다.
&&(AND결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.
논리 연산자의 피연산자가 '참(true)'인 경우와 '거짓(false)'인 경우의 연산결과를 표로 나타내면 다음과 같다.
x | y | x || y | x && y |
---|---|---|---|
true | true | true | true |
true | false | true | false |
false | true | true | false |
false | false | false | false |
ex) x는 10보다 크고, 20보다 작다. --> 10 < x && x < 20
ex) i는 2의 배수 또는 3의 배수이다. --> i % 2 == 0 || i % 3 == 0
논리 부정 연산자 ! 는 피연산자가 true이면 false를, false면 true를 결과로 반환한다.
간단히 말해 true와 false를 반대로 바꾸는 것이다.
| (OR연산자) 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.
& (AND연산자) 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다.
^ (XOR연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.
~ (비트 전환 연산자) 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다.(논리부정연산자 '!'와 유사)
<< >> (쉬프틑 연산자) 피연산자의 각자리를 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.