자바가 제공하는 다양한 연산자를 학습하세요.
1. 산술 연산자
2. 비트 연산자
3. 관계 연산자
4. 논리 연산자
5. instanceof
6. assignment(=) operator
7. 화살표(->) 연산자
8. 3항 연산자
9. 연산자 우선 순위
10. Java 13. switch 연산자
산술 연산자는 기존에 우리가 알고 있는 수학에서 사용하는 연산자와 기호모양이 다르다.
기호 | 뜻 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
비트 연산자는 이진 비트연산을 수행한다. 값을 이진수로 표현했을 때의 각 자리수를 아래의 표의 규칙에 따라 연산을 수행한다. 실수형인 float와 double을 제외한 모든 기본형에 사용가능 하다.
|(OR연산자) - 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.
&(AND연산자) - 피연산자 양 쪽이 모두 1이어야 1을 결과로 얻는다. 그 외에는 0을 얻는다.
^(XOR연산자) - 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.
두 개의 변수 또는 리터럴을 비교하는 데 사용되는 연산자로, 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 true 또는 false이다.
두 피연산자의 크기를 비교하는 연산자이다. 기본형 중에서는 boolean형을 제외한 나머지 자료형에 다 사용할 수 있고, 참조형에는 사용할 수 없다.
두 피연산자에 저장되어 있는 값이 같은지, 또는 다른지를 비교하는 연산자이다.
대소비교연산자(<,>, <=, >=)와는 달리, 기본형은 물론 참조형 모든 자료형에 사용할 수 있다. 기본형의 경우 변수에 저장되어 있는 값이 같은지를 알 수 있고, 참조형의 경우 객체의 주소값을 저장하기 때문에 두 개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지를 알 수 있다.
기본형과 참조형간에는 서로 형변환이 가능하지 않기 때문에 등가비교 연산자(==,!=)의 피연산자로 기본형과 참조형을 함께 사용할 수는 없다.
대소비교연산자 | <,>,<=,>= |
등가비교연산자 | ==,!= |
논리 연산자는 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 허용한다. 조건문과 반복문에서 조건식간의 결합에 사용된다.
그리고, "&&"가 "||" 연산보다 우선순위가 높으므로 한 조건식에 "&&"와 "||" 가 함께 사용될 때는 괄호를 사용해서 우선순위를 명확히 해주는 것이 좋다.
|| (OR결합) - 피연산자 중 한 쪽만 true이면 true을 결과로 얻는다.
&&(AND결합) - 피연산자 양쪽 모두 true이어야 true을 결과로 얻는다.
보통 instanceof 라고 하면 키워드로 알고 계시는 분들이 계시는데 (나포함)
instanceof는 연산자 입니다.
사용법 : 참조변수 instanceof 클래스 이름
- 참조변수가 해당 클래스 타입으로 변할 수 있는지 확인 해볼 수 있는 연산자 입니다.
- A,B 클래스가 있습니다.
- 클래스 B는 클래스 A를 상속받고 있습니다.
- Object 클래스의 여부도 확인하고 있습니다.
참조변수 a가 B로 형변환이 불가능한 것 제외 다 참입니다.
결론으로 상위클래스가 하위클래스를 변환을 못한다는 것을 확인할 수 있는 연산자입니다.
대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽입니다.
또한, 자바에서는 대입 연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입 연산자를 제공합니다.
대입 연산자 설명 = 왼쪽의 피연산자에 오른쪽의 피연산자를 대입함. += 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. -= 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입함. *= 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. /= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입함. %= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함. &= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 AND 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. |= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 OR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. ^= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 XOR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. <<= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 왼쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. >>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호를 유지하며 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함. >>>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호에 상관없이 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
람다표현식이라고 한다. 메소드를 하나의 식으로 표현한 것이다.
메소드
int min(int x, int y){ return x < y ? x : y; }
화살표연산자 (람다표현식)
- (매개변수목록) -> {함수몸체}
(x,y) -> x < y ? x : y;
조건문 if문을 사용하면 길어지는 코딩라인을 줄여주는 연산자입니다.
조건문
int a = 0;
if(5<4){
a = 40; // 거짓
}else{
a = 50; // 참
}
3항 연산자
int a = (5 < 4) ? 50:40; // 조건문 ? 참 : 거짓
연산자에는 우선순위가 있으며, 괄호 우선순위가 높고, 산술>비교>논리>대입 순서이며,
단항>이항>삼항순서입니다.
우선순위 | 연산자 | 내용 |
---|---|---|
1 | (),[] | 괄호/대괄호 |
2 | !,~,++,-- | 부정/증감 연산자 |
3 | *,/,% | 곱셈/나눗셈 연산자 |
4 | +,- | 덧셈 / 뺄셈 연산자 |
5 | <<,>>,>>> | 비트단위의 쉬프트 연산자 |
6 | <,<=,>,>= | 관계연산자 |
7 | ==,!= | |
8 | & | 비트단위의 논리연산자 |
9 | ^ | |
10 | | | |
11 | && | 논리곱 연산자 |
12 | || | 논리합 연산자 |
13 | ?: | 조건 연산자 |
14 | =,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,~= | 대입/할당 연산자 |
기존 switch 문이 변경이 된 것이 아니라 기능이 추가됬다는 것을 알기 바란다.
출저 : https://velog.io/@pond1029/operator
:
대신 ->
를 사용할 수 있다.int a = 1;
switch(a){
case 1 -> System.out.println("case1");
case 2 -> System.out.println("case2");
}
int a = 1;
int b = switch(a){
case 1 ->{
System.out.println("case1");
yield 10;
}
case 2 ->{
System.out.println("case2");
yield 12;
}
}