🔹증감연산자(++, --)
피연산자에 저장된 값을 1 증가 혹은 감소 시킨다.
🔸 증가연산자 : ++
🔸 감소연산자 : --🔸전위형 : 값이 참조되기 전 증가/감소 (--i)
🔸후위형 : 값이 참조된 후 증가/감소 (i--)int i = 5, j = 0; j = i++; // i = 6, j = 5; i = 5, j = 0; j = ++i; // i = 6, j = 6
🔹부호연산자(+, -)
부호연산자는 boolean, char형을 제외한 기본형에서만 사용가능하다.
🔹 사칙연산자(+, -, *, /)
프로그래밍에서 가장 많이 사용하는 연산자들
곱셈, 나눗셈, 나머지가 덧셈, 뺄셈보다 우선순위가 높다.
피연산자가 정수일 경우 나누는 수를 0으로 할 경우 ArithmeticException발생함.double pi = 3.141592; double shortPi = (int)(pi * 1000 + 0.5) / 1000.0; // shortPi = 3.142 double pi = 3.141592; double shortPi = Math.round(pi * 1000) / 1000.0;
🔹 나머지 연산자(%)
왼쪽의 피연산자를 오른쪽의 피연산자로 나누고 남은 나머지를 결과로 반환하는 연산자
int a = 10; int b = 3; int result1 = a / b; int result2 = a % b // result1 = 3, result2 = 1;
🔹 대소비교연산자(<, >, <=, >=)
두 피연산자의 값의 크기를 비교하는 연산자(좌변값을 기준 참일경우 true, 거짓일 경우 false를 반환한다)
참조형과 boolean을 제외한 모든 기본형에서 사용할 수 있다.
🔹 등가비교연산자(==, !=)
두 피연산자의 값이 같은지 다른지를 비교하는 연산자
기본형, 참조형 모두 사용할 수 있다.char a = 'A'; char b = 'B'; boolean result1 = a == 65; // true boolean result = a > b; // false
🔸문자열의 비교
문자열의 비교는 == 이 아닌 equals()를 사용한다.String str = "abc"; String str2 = "abc"; //원래 String str = new String("abc")로 사용해야함. String은 new 생성자를 사용하지 않고 간단하게 사용하는 것을 허용함 boolean result1 = str.equals("abc"); // true boolean result2 = str1 == str2; // false boolean result3 = str1 == "abc" // false // result2와 result3은 "abc"라는 문자는 같지만 서로 다른 객체이기 때문에 false를 반환한다.
🔹 논리연산자(&&, ||, !)
둘 이상의 조건을 AND나 OR로 연결하여 하나의 식으로 표현할 수 있게 해주는 연산자
🔸 &&(AND) : 피연산자가 모두 true일 때, true를 반환
🔸 ||(OR) : 피연산자 둘 중 하나만 true라도 true를 반환
boolean형의 피연산자 혹은 결과값을 boolean형으로 하는 조건식만 사용 가능하다.int a = 5; int b = 0; System.out.println(a != 0 || ++b != 0); // true System.out.println(a == 5 && b != 0); // false
🔸 논리연산자는 효율적인 연산을 한다.
➡️ OR연산의 경우 왼쪽 피연산자가 true면 오른쪽 피연산자의 값은 평가하지 않는다.
AND연산의 경우 왼쪽 피연산자가 false면 오른쪽 피연산자의 값은 평가하지 않는다.🔸 논리부정연산자(!)
피연산자가 true이면 false를, false면 true를 반환한다.boolean b = true; char ch = 'C'; System.out.println(!b); // false System.out.println(!('A' > ch)); // true
🔹 비트연산자(&, |, ^, ~, <<, >>)
🔸 |(OR) : 피연산자 중 한 쪽의 값이 1이면 1의 결과를 얻는다. 그외에는 0
🔸 &(AND) : 피연산자 양 쪽의 값이 모두 1일 때 1의 결과를 얻는다. 그외에는 0
🔸 ^(XOR) : 피연산자의 값이 서로 다를 때만 1을 얻는다. 같다면 0
| 연산
&연산
🔸 ~(비트전환연산자)
피연산자를 2진수로 표현했을 때, 0은 1, 1은 0으로 바꾼다.
자리이동으로 인해 저장범위를 벗어난 값들은 버려지고 빈 자리는 0으로 채워진다.🔸 <<, >>(쉬프트 연산자) : 피연산자(2진수)의 각 자리를 오른쪽 혹은 왼쪽으로 이동한다.
예) 10진수 8은 2진수로 00001000이다. '8 << 2' 1. 00001000을 왼쪽으로 2칸 이동시킨다. 00001000 -> 001000 2. 처음 0 2개는 버려지고 오른쪽 빈자리 2칸은 0으로 채워진다. 001000 -> 00100000 3. 00100000 : 10진수 32
❖ >>의 경우 음수의 경우 부호를 유지하기 위해서 빈자리를 1로 채운다.
❖ x << n = x * 2^n ( 8 << 1 = 16, 8 << 2 = 32)
❖ x >> n = x / 2^n ( 8 >> 1 = 4, 8 >> 2 = 2)
🔹 조건연산자(?:)
조건식, 식1, 식2를 필요로 하는 삼항 연산자
[조건식 ? 식1 : 식2] ➡️ 조건식이 참이면 식1을 반환, 거짓이면 식2를 반환한다.int x = 5; int y = 10; result = (x > y) ? x : y; // result = 10;
🔹 대입연산자(=, op=)
x = 3; //x : lvalue, y : rvalue
lvalue : 반드시 변수처럼 값을 변경할 수 있는 것이어야 한다.
rvalue : 변수 뿐 아니라 상수, 식 등 모든 것이 가능하다.🔸 복합대입연산자
대입연산자는 다른 연산자와 결합해서 사용가능하다.i = i + 3; i += 3; i = i * 3; i *= 3;