본문 바로가기

국비과정/JAVA (기초)

20230602 _[2일차]_04. 연산자

 [ 연산자 + - ]

 

모든 프로그램에서는 데이터의 계산을 위해서 연산자를 사용합니다.

지금 배울 연산자는 다른 프로그래밍에서도 비슷하게 씁니다.

 

주의해서 보셔야 할 것은 연산자의 연산 순서입니다.

 

1. 최우선 연산자

  . 클래스 또는 객체 소유의 변수, 메소드 등을 호출

  [] 배열

  ()

 

2. 단항 연산자

 ! (논리부정), ~(비트반전), +/- (부호연산), ++/-- (선행증감)

 

3. 산술 연산자 +, -, /, *, % (모듈러: 나머지값)

 

4. 쉬프트 연산자 <<, >>, >>> (자릿수이동)

 

5. 관계 연산자 <, >, <=, >=, ==, !=

 

6. 비트 연산자 &, |, ^

 

7. 논리 연산자 $$, ||, !

 

8. 삼항 연산자 조건식 ? 참일때  : 거짓일때 ;

 

9. 배정대임 : =, +=, -=, %=, /= 등...

 

10. 후행증감 

 ++/-- (후행증감)

 

package jun02;

public class Operator {
	public static void main(String[] args) {

		int num = 1;
		int num2 = ++num; // 선행증감
// 계산순서 ->   2 1    
		System.out.println(num);  // 2
		System.out.println(num2); // 2
		
		int num3 = ++num + ++num2;
		//       3 1     2 1
		System.out.println(num);   // 3
		System.out.println(num2);  // 3
		System.out.println(num3);  // 6
		
		num3 = --num + ++num2; 
		//   3 1     2 1
		System.out.println(num);   // 2
		System.out.println(num2);  // 4
		System.out.println(num3);  // 6
		
		num3 = num-- - num2--;
		//   2     3 1      3
		System.out.println(num);   // 1
		System.out.println(num2);  // 3
		System.out.println(num3);  // -2
		
		num3 = num-- + --num2;
		//   3     4 2 1
		System.out.println(num);   // 0
		System.out.println(num2);  // 2
		System.out.println(num3);  // 3
	}

}

[모듈러]

package jun02;

public class Operator {

	public static void main(String[] args) {

		System.out.println(2 / 2);  // 1 나눈 후 몫
		System.out.println(3 / 2);  // 1
		System.out.println(4 / 2);  // 2
		
		System.out.println(2 % 2);  //0 나눈 후 나머지 값
		System.out.println(3 % 2);  //1
		System.out.println(4 % 2);  //0
		
		int ssnCode = 1;
		int result = ssnCode % 2;
		
		if (result == 0) {
			System.out.println("당신은 여자 입니다.");
		} else {
			System.out.println("당신은 남자 입니다.");
		}
		
		System.out.println(1 % 2);  // 1 나눌 숫자가 작으면 반환 
		System.out.println(2 % 2);  // 0 
		System.out.println(3 % 2);  // 1
		System.out.println(4 % 2);  // 0
		System.out.println(5 % 2);  // 1
		System.out.println(6 % 2);  // 0
        
/*		
*		2로 나누면 나머지는 0~1  > 이진법 활용
*		3으로 나누면 나머지는 0~2
*		4로 나누면 나머지는 0~3
*/		
        
	}
}

[쉬프트 연산자]

 

package jun02;

public class Operator {

	public static void main(String[] args) {

		int sh = 2;  // 10 (이진법)
		System.out.println( Integer.toBinaryString(sh) ); // 10
		System.out.println( Integer.toBinaryString(sh << 3) ); //10000
		// 왼쪽으로 3칸 이동하고 빈칸은 0으로 채워라 -> 10000

		sh = 10;  // 1010
		System.out.println( Integer.toBinaryString(sh) ); // 1010
		System.out.println( Integer.toBinaryString(sh >> 2) ); // 10
		// 오른쪽으로 2칸 이동하고 뒤의값은 자름 -> 10
		
		sh = -1; // 1 (x32개) -> 자바는 32비트
		System.out.println( Integer.toBinaryString(sh) ); // 1 (x32개)
		System.out.println( Integer.toBinaryString(sh >> 2) ); // 1 (x32개)
		// 오른쪽으로 2칸 이동하여 맨뒤 두자리 사라지고 앞의 빈칸은 1로 채워짐
		System.out.println( Integer.toBinaryString(sh << 2) ); // 1 (x30개) + 00
		System.out.println( Integer.toBinaryString(sh >>> 31) ); // 1
		// 오른쪽으로 31칸 이동하고, 앞의 빈칸 채워지지 않음

		int sh = -50;
		System.out.println( Integer.toBinaryString(sh) );
		// 11111111111111111111111111001110
		System.out.println( Integer.toBinaryString(sh >> 2) );
		// 11111111111111111111111111110011
		System.out.println( Integer.toBinaryString(sh >>> 2) ); 
		// 111111111111111111111111110011
		System.out.println( Integer.toBinaryString(sh << 2) );
		// 11111111111111111111111100111000	
	}
}

[선행증감/후행증감]

package jun02;

public class Test {

	public static void main(String[] args) {
		
		int num9 = 1;
		System.out.println(num9);   // 1
		
		int num10 = num9--;
		//        1     2
		System.out.println(num9);   // 0
		System.out.println(num10);  // 1
		
		int num11 = num9-- + --num9;
		//        3     4  2  1
		System.out.println(num9);   //  -2
		System.out.println(num10);  // 1
		System.out.println(num11);  // -2  *****
	}
}

package jun02;

public class Test {

	public static void main(String[] args) {
		
		int num9 = 1;
		System.out.println("num9 = 1 : " + num9);
		
		int num10 = num9--;
		//        1      2
		System.out.println("num10 = num9-- : " + num9);
		System.out.println("num10 = num9-- : " + num10);

		int num11 = num9-- + --num9;
		//        3     4  2  1
		System.out.println("num11 = num9-- + --num9 : " + num9);    //-2
		System.out.println("num11 = num9-- + --num9 : " + num10);   // 1
		System.out.println("num11 = num9-- + --num9 : " + num11);   //-2  *****
	}
}

num9 = 1 : 1

num10 = num9-- : 0
num10 = num9-- : 1

num11 = num9-- + --num9 : -2
num11 = num9-- + --num9 : 1
num11 = num9-- + --num9 : -2  *****