프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산이라고 하며, 연산에 사용되는 표시나 기호를 연산자라고 한다.
모든 숫자 타입에 대한 사칙연산 및 나머지 계산
//덧셈 +
System.out.println(9 + 3);//출력: 12
//뺄셈 -
System.out.println(9 - 3);//출력: 6
//곱셈 *
System.out.println(9 * 3);//출력: 27
//나눗셈 /
System.out.println(9 / 3); //출력: 3
//나머지 %
System.out.println(9 % 3); //출력: 0
음수와 양수의 부호
boolean 과 char 타입을 제외한 모든 타입에서 사용가능하다.
부호 연산자의 산출 타입은 int 타입이 된다.
short sh = 400;
//sh = -sh;//부호연산자 사용시 컴파일 에러 형변환 필수
int change = -sh;
두 문자열을 연결
String kakao = "kakao";
String talk = "talk";
System.out.println(kakao + talk);//출력: kakaotalk
우변의 값을 좌변의 변수에 대입
우선순위가 가장 낮은 연산자로 다른 연산자의 연산이 모두 끝난 뒤에 대입될 때 사용되며 다른 연산자와 같이 복합하여 사용 될 때도 있다.
변수의 표현식의 데이터 타입과 같거나 호환될 수 있어야 한다.
1만큼 증가/감소
연산자가 변수 앞에 있는 경우 -> 자신의 값을 증가시키거나 감소시킨후 식을 계산한다.
int front = 22;
System.out.println(++front);//출력: 23
변수 뒤에 있을 경우 -> 대입이 먼저되고 값이 증가시키거나 감소시킨다.
int back = 33;
System.out.println(back++);//출력: 33
System.out.println(back);//출력: 34
증감 연산자의 독립으로 사용할 때 -> 연산 차이가 없다
int i = 1;
++i; //독립 사용
System.out.println(i); //출력: 2
i = 1;
i++; //독립 사용
System.out.println(i); //출력: 2
값의 비교
피연산자 사이의 상대적인 크기를 판단하여, true와 false를 반환한다.
boolean을 제외한 기본형에 사용할 수 있지만, 참조형에는 사용할 수 없다.
//문자열 비교시 유니코드로 비교
//'A' -> 65
System.out.println('A' > 'B');//출력: false
System.out.println('A' > 50);//출력: true
논리 부정, 논리곱, 논리합
피연산자 사이의 상대적인 크기를 판단하여, true와 false를 반환한다.
||보다 &&가 우선순위가 높기 때문에 함께 사용할 때 괄호를 사용하여 우선순위를 명확하게 해줘야 한다.
!: 부정의 의미로 not이라고 읽는다. true에 붙으면 false가 되고 false에 붙으면 true가 된다.
System.out.println(!true);//false
System.out.println(!false);//true
|| : 좌형 또는 우형이 true일 때(or)
&& : 좌형과 우형 모두 true일 때(and)
if (true && true) {
System.out.println(true && true);//출력: true
}
if (true && false) {
//false -> 출력 못함
}
if (true || true) {
System.out.println(true || true);//출력: true
}
if (true || false) {
System.out.println(true || false);//출력: true
}
조건식에 따라 true일 경우 A, false일 경우 B 하나를 선택한다.
if~else문을 통해서도 처리가 가능하지만, 가벼운 로직을 처리할 때 사용하기 좋다.
소스가 if~else문에 비해 짧지만 처리 속도가 빨라지는 것은 아니다.
//1이 3보다 크면 10, 크지 않으면 30을 A에 저장한다.
int A = (1 > 3) ? 10 : 30;
System.out.println(A);//출력: 30
피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분한다.
(피연산자 : 연산되는 데이터)
부호, 증감, 논리 부정, 비트 반전
산술, 문자열, 비교, 논리, 대입, 비트
조건(조건식)? A : B
기본적으로 연산자에는 우선순위가 있다.
연산자 우선순위가 같으면 연산 방향에 따라 달라진다.
결과적으로 괄호를 사용하여 우선순위를 명확하게 해주는 것이 좋다.
( ), [ ] 괄호, 대괄호가 우선순위가 가장 높다.
삼항 < 이항 < 단항
대입 < 논리 < 비교 < 산술
대부분의 연산자는 왼쪽에서 오른쪽으로 연산을 하고,
단항 연산자, 부호연산자, 대입연산자는 오른쪽에서 왼쪽으로 연산한다.
//5가 c에 들어가고, c가 b에 b가 a에 들어간다.
a = b = c = 5//오른쪽에서 왼쪽으로 연산