본문 바로가기

국비과정/JAVA (기초)

20230605 _[3일차]_02. 연산자

* 연산자 : 계산에 사용되는 기호  (순서 외워두면 좋음)

 

1. 최우선     . (점) [] (배열) () (괄호)

2. 단항         ! (반전), ~ (비트반전), +/- (부호연산), ++/-- (선행증감)

3. 산술         +,  -,  /,  *,  %(모듈러)

4. 쉬프트     <<,  >>,  >>>

5. 관계         >,  <,  >=,  <=,  == (같아?),  != (달라?)

6. 비트        & (and),  | (or),  ^ (xor)

7. 논리        && (and),  || (or)

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

9. 대입        =,  +=,  -=,  /=,  %= , ..... 등등 많음 (값을 넣음, 값 저장)

10. (후행증감) ++/--

 

(복습)

package jun05;

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

// 정수 기본타입으로 number에다가 1이라고 저장해주세요.
		int number = 1;
		
//		int number;                  선언만 하고 초기화는x
//		System.out.println(number);  
//		> Error : The local variable number may not have been initialized
//		* 지역변수는 선언 이후 초기화까지 해줘야함!

		// 선행증감 & 후행증감
		System.out.println(++number);  // 2
		System.out.println(number);    // 2
		
		number = 1;
		System.out.println(number++);  // 1
		System.out.println(number);    // 2
		
//		int num2 += --number;         (num2에 대해 선언만하고 초기화x,
//		int num2 = num2 + --number;      초기화 되지 않아 연산불가)
//		> Error : The local variable num2 may not have been initialized
//		
//		int num2 = --number;           초기화x 상태에서 저장은 가능.
		
		number = 1;
		int num2 = --number + 10;
		//       3 1        2
		int num3 = ++number + --num2;
		//       3 1        2 1
		System.out.println(number); //  0 -> 1
		System.out.println(num2);   // 10 -> 9
		System.out.println(num3);   //      10 
		
		number = num2 = num3 = 0;   // 모든 값을 0으로 초기화
		
		number = num2-- + num3++;
		//     2     3  1     3
		System.out.println(number); // 0
		System.out.println(num2);   // -1
		System.out.println(num3);   // 1
	}
}

[불리언 & 쉬프트]

 

		boolean check = false;
		check = 1 + 2 != 4;
		System.out.println(check);	// true
		
		check = number == num2;
		System.out.println(check);	// false

		number = 10;           		// 이진수 : 1010
		number = number << 2;  		// 이진수 : 101000 
		System.out.println(number);	// 십진수 : 40

		number = 2;           		// 이진수 : 10
		number = number << 2;  		// 이진수 : 1000 
		System.out.println(number);	// 십진수 : 8
		
		number = 40;           		// 이진수 : 101000
		number = number >> 2;  		// 이진수 : 1010
		System.out.println(number);	// 십진수 : 10

[ 2, 8, 16 진법 입력하기 ]

10 0 1 2 3 4 5 6 7 8 9 10 11 .. 15 16 .. 26 27 .. 32 ...
2 0 1 10 11 100 101 110 111 1000 1001 1010 1011 ..              
8 0 1 2 3 4 5 6 7 10 11 12 13 .. 17 20 ..        
16 0 1 2 3 4 5 6 7 8 9 A B .. F 10 .. 1A 1B .. 20...

 

  • 2진법 : 2개의 숫자(0~1)를 이용해서 수를 표현
  • 8진법 : 8개의 숫자(0~7)를 이용해서 수를 표현
  • 16진법 :  10개의 숫자(0~9)와 6개의 문자(A~F)를 이용해서 수를 표현
		System.out.println(Integer.toBinaryString(11)); // 10진수 -> 2진수
		System.out.println(Integer.toOctalString(15));  // 10진수 -> 2진수
		System.out.println(Integer.toHexString(32));    // 10진수 -> 2진수
		
		//입력
		num2 = 10;     // 10진수
		System.out.println(num2);  // 10
		
		num2 = 0B1010; // 2진수           -> 0B + 2진수
		System.out.println(num2);  // 10
		num2 = 0B1;
		System.out.println(num2);  // 1
		num2 = 0B10;
		System.out.println(num2);  // 2
		num2 = 0B11;
		System.out.println(num2);  // 3
		
		num2 = 010;   // 8진수            -> 0 + 8진수
		System.out.println(num2);  // 8
		num2 = 020;
		System.out.println(num2);  // 16
		
		num2 = 0X15;  // 16진수           -> 0X + 16진수
		System.out.println(num2);  // 21
		num2 = 0XF;
		System.out.println(num2);  // 15
		num2 = 0X20;
		System.out.println(num2);  // 32

[비트 반전] ...... 많이는 안씀

		// 비트 반전 ~ (1 -> 0 / 0 -> 1 )   
		
		System.out.println(Integer.toBinaryString(1)); // 1
		System.out.println(Integer.toBinaryString(-1)); 
		// 00000000000000000000000000000001
		// 11111111111111111111111111111111
		
		System.out.println(Integer.toBinaryString(~1)); 
		System.out.println(Integer.toBinaryString(~-1));
		// 11111111111111111111111111111110
		// 00000000000000000000000000000000
		
		System.out.println(Integer.toBinaryString(2)); // 10
		System.out.println(Integer.toBinaryString(~2));		
		// 00000000000000000000000000000010
		// 11111111111111111111111111111101
		System.out.println(0B11111111111111111111111111111101);  // -3
		
		System.out.println(Integer.toBinaryString(5));    // 101
		// 00000000000000000000000000000101
		System.out.println(Integer.toBinaryString(-5));
		// 11111111111111111111111111111011
		System.out.println(Integer.toBinaryString(~-5));  // 100 = 4
		// 00000000000000000000000000000100

[비트 연산자] _ & | ^

		// & (and)
		number = num2 = num3 = 0;
		
		number = 2;  // 10
		num2 = 3;    // 11
					 // 10 -> 2 (10진수)
		num3 = number & num2;     // 둘다 1일때 1
		System.out.println(num3); // 2
		
		number = 2;  // 010
		num2 = 4;    // 100
					 // 000 
		num3 = number & num2;
		System.out.println(num3); // 0
		
		number = 2;  // 010
		num2 = 6;    // 110
					 // 010 
		num3 = number & num2;     
		System.out.println(num3); // 2
		
		number = 3;  // 011
		num2 = 6;    // 110
					 // 010 
		num3 = number & num2;
		System.out.println(num3); // 2
		
		number = 3;  // 011
		num2 = 7;    // 111
					 // 011 
		num3 = number & num2;
		System.out.println(num3); // 3
        
// ****************************************************************
		
		// | (or)
		
		number = 3;  // 011
		num2 = 7;    // 111
					 // 111 -> 7 (10진수)
		num3 = number | num2;     // 하나라도 1이 있으면 1
		System.out.println(num3); // 7

		number = 2;  // 010
		num2 = 7;    // 111
					 // 111
		num3 = number | num2;    
		System.out.println(num3); // 7
		
		number = 2;  // 010
		num2 = 5;    // 101
					 // 111
		num3 = number | num2;    
		System.out.println(num3); // 7
        
// ****************************************************************
	
		// ^ (xor)
		
		number = 2;  // 010
		num2 = 5;    // 101
					 // 111 -> 7 (10진수)
		num3 = number ^ num2;     // 서로 값이 다를 때 1, 같은 때 0
		System.out.println(num3); // 7
		
		number = 2;  // 0010
		num2 = 8;    // 1000
					 // 1010
		num3 = number ^ num2;    
		System.out.println(num3); // 10
		
		number = 2;  // 0010
		num2 = 10;   // 1010
					 // 1000
		num3 = number ^ num2;    
		System.out.println(num3); // 8
		
		number = 2;  // 0010
		num2 = 11;   // 1011
					 // 1001
		num3 = number ^ num2;    
		System.out.println(num3); // 9

[논리 연산자]

		// 논리 연산자
		// (왼쪽) && (오른쪽) = 둘다 참일때 참
		
		System.out.println( 1 + 2 == 4 && 1 + 3 == 4 ); // false
		System.out.println(    false   &&    true    ); // false
		
		System.out.println( 1 + 2 == 3 && 1 + 2 == 4 ); // false
		System.out.println(    true    &&    false    ); // false

		System.out.println( !(1 + 2 == 3) && 1 + 2 == 4 ); // false
		System.out.println(    false      &&    false   ); // false

		System.out.println( !(1 + 2 == 4) && 1 + 2 == 3 ); // true
		System.out.println(     true      &&    true    ); // true

 // ********************************************************************************
		
		// (왼쪽) || (오른쪽) = 둘 중 하나만 참이면 참
		
		System.out.println( true || false );    // true
		System.out.println( false || !false );  // true
		System.out.println( false || false );   // false
		System.out.println( true || true );     // true
		// 참   || 거짓  = 참
		// 거짓 || 참    = 참
		// 거짓 || 거짓  = 거짓
		// 참   || 참    = 참

[ if 조건문 ]

		[if 조건문]
		if (조건식) {
			참일때 실행할 명령어;
		} else {
			조건이 거짓일때 실행할 명령어;
		}
		조건식 ? 참일때 : 거짓 ;
*/	
1)		number = 1;
		System.out.println( number == 1 ? "1입니다" : "2입니다." );
		
2)		if(number == 1) {
			System.out.println("1입니다");
		} else {
			System.out.println("2입니다");
		}
		// 1, 2 두 표현식 결과값은 같음
		
		check = false;
		number = 1;
		
		check = number == 1 ? true : false;
		System.out.println(check);  //  true
 		
		check = number != 1 ? true : false;
		System.out.println(check);  //  false

		check = number > 1 ? true : false;
		System.out.println(check);  //  false
		
		check = number > 1 || number == 1 ? true : false;
		System.out.println(check);  //  true