연산자(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으로 바꾼다.(논리부정연산자 '!'와 유사)
<< >> (쉬프틑 연산자) 피연산자의 각자리를 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.