연산자의 종류

HYUNBIN CHO·2021년 5월 26일
0

java

목록 보기
5/23
post-thumbnail

🔷 단항연산자

🔹증감연산자(++, --)

피연산자에 저장된 값을 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;
profile
백견이 불여일타

0개의 댓글

관련 채용 정보