연산자

놀아·2020년 12월 19일
0

자바 스터디

목록 보기
3/7

목표

자바가 제공하는 다양한 연산자를 학습하세요.

학습할 것

1. 산술 연산자
2. 비트 연산자
3. 관계 연산자
4. 논리 연산자
5. instanceof
6. assignment(=) operator
7. 화살표(->) 연산자
8. 3항 연산자
9. 연산자 우선 순위
10. Java 13. switch 연산자

1. 산술 연산자

산술 연산자는 기존에 우리가 알고 있는 수학에서 사용하는 연산자와 기호모양이 다르다.

기호
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지

2. 비트연산자 - &, |, ^

비트 연산자는 이진 비트연산을 수행한다. 값을 이진수로 표현했을 때의 각 자리수를 아래의 표의 규칙에 따라 연산을 수행한다. 실수형인 float와 double을 제외한 모든 기본형에 사용가능 하다.

|(OR연산자) - 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.
&(AND연산자) - 피연산자 양 쪽이 모두 1이어야 1을 결과로 얻는다. 그 외에는 0을 얻는다.
^(XOR연산자) - 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.

3. 관계 연산자

두 개의 변수 또는 리터럴을 비교하는 데 사용되는 연산자로, 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 true 또는 false이다.

대소비교연산자 - <, >, <=, >=

두 피연산자의 크기를 비교하는 연산자이다. 기본형 중에서는 boolean형을 제외한 나머지 자료형에 다 사용할 수 있고, 참조형에는 사용할 수 없다.

등가비교연산자 - ==, !=

두 피연산자에 저장되어 있는 값이 같은지, 또는 다른지를 비교하는 연산자이다.
대소비교연산자(<,>, <=, >=)와는 달리, 기본형은 물론 참조형 모든 자료형에 사용할 수 있다. 기본형의 경우 변수에 저장되어 있는 값이 같은지를 알 수 있고, 참조형의 경우 객체의 주소값을 저장하기 때문에 두 개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지를 알 수 있다.
기본형과 참조형간에는 서로 형변환이 가능하지 않기 때문에 등가비교 연산자(==,!=)의 피연산자로 기본형과 참조형을 함께 사용할 수는 없다.

대소비교연산자 <,>,<=,>=
등가비교연산자 ==,!=

4. 논리연산자 - &&, ||

논리 연산자는 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 허용한다. 조건문과 반복문에서 조건식간의 결합에 사용된다.
그리고, "&&"가 "||" 연산보다 우선순위가 높으므로 한 조건식에 "&&"와 "||" 가 함께 사용될 때는 괄호를 사용해서 우선순위를 명확히 해주는 것이 좋다.

|| (OR결합) - 피연산자 중 한 쪽만 true이면 true을 결과로 얻는다.
&&(AND결합) - 피연산자 양쪽 모두 true이어야 true을 결과로 얻는다.

5. instanceof 연산자

보통 instanceof 라고 하면 키워드로 알고 계시는 분들이 계시는데 (나포함)
instanceof는 연산자 입니다.

사용법 : 참조변수 instanceof 클래스 이름

  • 참조변수가 해당 클래스 타입으로 변할 수 있는지 확인 해볼 수 있는 연산자 입니다.

예시

  • A,B 클래스가 있습니다.
  • 클래스 B는 클래스 A를 상속받고 있습니다.
  • Object 클래스의 여부도 확인하고 있습니다.

🙄결과로 어떤 값이 나올까요?

참조변수 a가 B로 형변환이 불가능한 것 제외 다 참입니다.
결론으로 상위클래스가 하위클래스를 변환을 못한다는 것을 확인할 수 있는 연산자입니다.

6. assignment(=) operator

대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽입니다.
또한, 자바에서는 대입 연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입 연산자를 제공합니다.

대입 연산자 설명
= 왼쪽의 피연산자에 오른쪽의 피연산자를 대입함.
+= 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
-= 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
*= 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
/= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
%= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함.
&= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 AND 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
|= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 OR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
^= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 XOR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
<<= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 왼쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
>>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호를 유지하며 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
>>>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호에 상관없이 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.

7. 화살표(->) 연산자

람다표현식이라고 한다. 메소드를 하나의 식으로 표현한 것이다.

메소드

int min(int x, int y){
 	return x < y ? x : y;
}

화살표연산자 (람다표현식)

  • (매개변수목록) -> {함수몸체}
(x,y) -> x < y ? x : y;

8. 3항 연산자

조건문 if문을 사용하면 길어지는 코딩라인을 줄여주는 연산자입니다.

조건문

int a = 0;

if(5<4){
	a = 40; // 거짓
}else{
	a = 50; // 참
}

3항 연산자

int a = (5 < 4) ? 50:40; // 조건문 ? 참 : 거짓

9. 연산자 우선 순위

연산자에는 우선순위가 있으며, 괄호 우선순위가 높고, 산술>비교>논리>대입 순서이며,
단항>이항>삼항순서입니다.

우선순위 연산자 내용
1 (),[] 괄호/대괄호
2 !,~,++,-- 부정/증감 연산자
3 *,/,% 곱셈/나눗셈 연산자
4 +,- 덧셈 / 뺄셈 연산자
5 <<,>>,>>> 비트단위의 쉬프트 연산자
6 <,<=,>,>= 관계연산자
7 ==,!=
8 & 비트단위의 논리연산자
9 ^
10 |
11 && 논리곱 연산자
12 || 논리합 연산자
13 ?: 조건 연산자
14 =,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,~= 대입/할당 연산자

10. Java 13. switch 연산자

기존 switch 문이 변경이 된 것이 아니라 기능이 추가됬다는 것을 알기 바란다.
출저 : https://velog.io/@pond1029/operator

  • 화살표 연산자
    : 대신 ->를 사용할 수 있다.
int a = 1;
switch(a){
	case 1 -> System.out.println("case1");
    case 2 -> System.out.println("case2");
}
  • yield
    값을 리턴 할 수 있다.
int a = 1; 
int b = switch(a){
		case 1 ->{
        	System.out.println("case1");
            	yield 10;
	}
        case 2 ->{
        	System.out.println("case2");
            	yield 12;
        }
    }

참고

http://www.tcpschool.com/java/intro

profile
머리가 나쁘기 때문에 메모와 정리를 한뒤에 찾아보기

0개의 댓글