JAVA 3강_연산자 우선순위

YEONG EUN LEE (Chloe)·2023년 12월 12일
0

JAVA 기초

목록 보기
5/42
post-thumbnail

연산

연산,연산자,피연산자의 정의

연산 : 명령문을 실행해서 대상에 대한 처리를 하는 것을 연산이라고 함.

연산자(오퍼레이터 = Operator) : 피연산자를 연산처리하기 위한 기호
피연산자(항 = 오퍼런드 = Operand) : 연산의 대상이 되는 것을 말함.

연산자의 종류 및 우선순위

  1. 괄호연산자 : ( ), { }, [ ]
  2. 단항 연산자 (항이 한 개인 연산자)
  • 논리 : ! (부정 = 아니다 = NOT)
  • 비트 : ~ (NOT)
  • 전위연산자 : ++ -- (항 앞에 위치함 ex) ++a)
  • 접근연산자 : .
  • 부호연산자 : + -
  1. 이항연산자 (항이 두 개인 연산자)
  • 결합(문자열결합) : +
  • 산술연산 : *(곱셈) /(나눗셈-몫) %(나눗셈-나머지) +(덧셈) -(뺄셈)
  • 비교 : == != < <= > >= instanceof
  • 논리 연산자의 종류:

비트:
&(논리곱 AND -> 모두 참인 경우만 참, 나머지는 거짓
|(논리합 OR -> 모두 거짓인 경우만 거직, 나머지는 참)
^(배타적논리합 XOR -> 항이 서로 다른 경우만 참, 나머지는 거짓) => 값을 1,0으로 반환

&(논리곱)연산자

좌항우항결과
000
010
100
111

|(논리합)연산자

좌항우항결과
000
011
101
111

^(배타적논리합)연산자

좌항우항결과
000
011
101
110

---------> 조건식에서 사용

  • 논리곱 : &&(두 조건이 모두 참인 경우만 참)
  • 논리합 : || (두 조건 중 하나라도 참인 경우 참)
    => 값을 true, false로 반환함

&&

좌항우항결과
TTT
TFF
FTF
FFF

||

좌항우항결과
TTT
TFT
FTT
FFF
  1. 삼항연산자 (항이 세개인 연산자):
    => 조건식 ? 참일때의 실행문이나 값: 거짓일때의 실행문이나 값

  2. 대입, 혼합대입 연산자 : = *= /= %= += -=

  3. 후위연산자: ++ -- (ex) a++)

전위연산자, 후위연산자 보충 설명

코드

코드

public class Ex04 {

	public static void main(String[] args) {
		int a = 10, b=10;
		int c = a; //c = 10
		System.out.println("a : " + a + ", c : " + c);
		c = ++a + b; // a = 11, c = 21
		System.out.println("a : " + a + ", c : " + c);
		c = a++ + b; // c = 21, a = 12
		System.out.println("a : " + a + ", c : " + c);

	}

}

전위연산자와 후위연산자에는 반드시 대입연산자가 들어간다고 생각해야함

결과
결과

2진수로 변환

10을 2진수로 변환
10을 2진수로 변환

10진수를 8진수, 16진수로 변환할 때 2진수로 변환하는 것이 더 쉬움

30을 2진수로 변환

168421
11110

30을 8진수로 변환

32168421
011110
421421
011110

따라서 36(8진수)

30을 16진수로 변환

6432168421
0011110
84218421
00011110

따라서 1E(16진수)

비트 연산


public class Ex09 {

	public static void main(String[] args) {
		// 비트연산 AND
		System.out.println("비트연산 AND : 곱");
		System.out.println(0 & 0);
		System.out.println(0 & 1);
		System.out.println(1 & 0);
		System.out.println(1 & 1);
		
		
		System.out.println(12 & 5); // 2진수로 계산하고 10진수로 반환
		/*
			8 4 2 1
			1 1 0 0
			
			8 4 2 1
			0 1 0 1
			
			0 1 0 0 -----> 4가 결과로 나옴
		*/
		
		System.out.println("===============\n");
		
		
		// 비트연산 OR
		System.out.println("비트연산 OR : 합");
		System.out.println(0 | 0); // 0
		System.out.println(0 | 1); // 1
		System.out.println(1 | 0); // 1
		System.out.println(1 | 1); // 1
		System.out.println(12 | 5); // 13
		System.out.println("=============\n");
		
		/*
		 * 8 4 2 1
		 * 1 1 0 0
		 * 
		 * 8 4 2 1
		 * 0 1 0 1
		 * 
		 * 1 1 0 1 ----->13
		 * */
		
		
		// 비트연산 XOR(배타적연산)
		System.out.println("비트연산 XOR : 배타적 합"); // 서로 다른 값이면 1
		System.out.println(0 ^ 0); // 0
		System.out.println(0 ^ 1); // 1
		System.out.println(1 ^ 0); // 1
		System.out.println(1 ^ 1); // 0
		System.out.println(12 ^ 5); // 9
		System.out.println("================\n");
		
		/*
		 * 8 4 2 1
		 * 1 1 0 0
		 * 0 1 0 1
		 * 1 0 0 1 ----------> 9
		 * 
		 * */
		
		
		
		

	}

}

논리 연산

package first;

public class Ex10 {

	public static void main(String[] args) {
		
		// 논리곱이나 논리합은 연산의 순서가 중요함. 
		//  논리곱 연산 : 모두 참(true)인 경우만 true
		System.out.println( true && true);
		System.out.println( true && false);
		System.out.println( false && true); // 앞에것만 계산하고 false 반환
		System.out.println( false && false); // 앞에것만 계산하고 false 반환

		System.out.println("==================\n");
		
		// 논리합 연산 : 하나만 참(true)인 경우만 true
		// 모두 거짓(false)인 경우만 거짓(false)!
		System.out.println( true || true); // 앞에것만 계산하고 true 반환
		System.out.println( true || false); // 앞에것만 계산하고 true 반환
		System.out.println( false || true);
		System.out.println( false || false);
		
		System.out.println("==================\n");
		
		// 예외상황
		int value1 = 3;
		System.out.println("논리연산 논리곱 &&");
		System.out.println(false && ++value1 > 6); 
		System.out.println(++value1 > 6 && false); 
		// 비교연산자 예외상황 앞에 항 밖에 없으면 논리곱 연산이 먼저 계산됨
		// 논리곱 연산이기에 false가 나오면 뒤에 것을 계산하지 않음
		System.out.println(value1);
		System.out.println(true && ++value1 > 6);
		System.out.println(value1);
		System.out.println("===============\n");
		
		
		// 예외상황
		System.out.println("논리연산 논리합 ||");
		int value2 = 5;
		System.out.println(true || value2++ > 6); // true
		System.out.println(value2);	// 5	
		System.out.println(false || value2++ > 6); // false
		System.out.println(value2); // 6
		System.out.println("==================\n");
		
		
		
		
	}

}

단축키 보너스

ctrl + n + t 를 누르면 새로운 클래스를 쉽게 생성할 수 있음
tab 키를 누르면서 이동, v 표시를 하면 체크박스를 선택할 수 있음

0개의 댓글