일단 해보는 코딩/Java

[Java] 연산자 종류

eun_zoey2 2022. 7. 20. 12:03
728x90
연산자(Operator)

 

최고 연산자

. , ( ) Integer.parseInt(), 상속(inherit)에서도 부모를 parent.child 식으로 표시

증감 연산자

++, --

package Java03;

public class Test07 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		System.out.println("a : " + ++a); 
		//+1을 먼저 출력하기 때문에 값 11이 출력됨
		int b = 10;
		System.out.println("b : " + b++); 
		//b를 먼저 출력하기에 +1은 추가되지 못하고 10이 출력됨
		System.out.println("b : " + b); 
		// 이미 b에 1이 추가된 결과를 프린트해서 11이 출력됨
	}

}

 

산술 연산자

+, -, *, /, %(moduler:나머지)

ex) int 10 / 3 => 3
      int 10 % 3 => 1

package Java03;

public class Test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1, n2;
		n1 = 20;
		n2 = 7;
		int n3 = n1 + n2;	//int로 선언해줘야한다. 앞에 n1,n2는 이미 int로 지정해주었기 때문.
		// n1, n2 앞에서 선언할때 n3를 할 수 있다.
		System.out.println("n3 = " + n3);
		n3 = n1 - n2; // int n3 = ~ 하면 오류. 이미 저장된 n3의 값만 변경
		System.out.println("n3 = " + n3);
		n3 = n1 / n2;
		System.out.println("n3 = " + n3);
		n3 = n1 % n2;
		System.out.println("n3 = " + n3);
		
	}

}

 

시프트 연산자 

>>, << , <=비트에서 맨 첫번째 비트가 1이면 - 부호를 의미한다.

0011(2^1+2^0(3) <- <<2 : 1100

뒤에 채워지는 00을 padding이라고 하고,

결과적으로 맨 첫번째 비트가 1이 되므로 -1100의 의미가 되어서 2^2=4이므로 -4가 되는 결과를 주의한다.

package Java03;

public class Test06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 12; // 1100
		int b = 2; 
		int c = a << b; // c = a >> 2 => 0011
		System.out.println("c : " + c );
		int d = c << b; // d = c << 2 => 1100 
		System.out.println("d : " + d );
		char ch = 'F';
		int num = 1;
		char cha_result = (char)(ch >> num); // 0100011 => 35(ASCII CODE 값 : #)
		System.out.println("cha_result : " + cha_result);
		
	}

}

 

비교 연산자

>, <, >=, <=, ==, !=

package Java03;

public class Test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1 = 10;
		int n2 = 20;
		boolean result; // True|False만 가지는 result라는 불리언 변수 선언
		System.out.println("n1 = " + n1 + ", n2 = " + n2);
		System.out.println("----------------");
		result = n1 < n2;
		System.out.println("n1 < n2 : " + result);
		//boolean result = n1 > n2 ; 와 같은 의미
		result = n1 == n2;
		System.out.println("n1 == n2 : " + result);
		result = n1 != n2;
		System.out.println("n1 != n2 : " + result);
	}

}

 

비트 연산자

&, |, ^(xor:배타적 or), ~(not)

   1100 : 1100 & 1010 => 1000
&1010 : 1100 | 1010 => 1110
   1000 : 1100 ^ 1010 => 1100 | 0101 => 1101

package Java03;

public class Test05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;		//1010
		int b = 7;		//0111
		int c = a & b;	// 논리 곱 : 모두 1일 때만 1, 나머지는 0
		System.out.println(c);
		int a2 = 12;
		int b2 = 8;
		int c2 = a2 | b2;	//논리 합 :  두 값이 모두 0일 때만 0, 나머지는 1
		System.out.println(c2);
		int a3 = 9;
		int b3 = 11;
		int c3 = a3 ^ b3;	// 배타적 or :  두 값이 서로 같을 때만 0, 서로 다를 때는 1
		System.out.println(c3);
		
	}

}

 

논리 연산자

&&(and), | |(or), !(not)

ex) if(a > 5 && b < 10 )

package Java03;

public class Test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int myAge = 30;
		int limit = 35;
		boolean result1 = ((limit = myAge) >=5 && myAge > 30);
		System.out.println(" && 연산 결과 : " + result1);
		System.out.print("-------------------\n");
		int n1 = 10;
		int n2 = 20;
		boolean result2 = ((n1 += 10) > 20 || (n2 - 10 == 11));
		System.out.println(" || 연산 결과 : " + result2);
		System.out.println(" ! 연산 결과 : " + result2);
	}

}

 

조건 연산자(삼항 연산자)

조건 ? 참_값 : 거짓_값

ex) if (a > 0 ? 10 : 0 )

package Java03;

public class Test08 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		int b = 15;
		boolean result; 
		result = ++a >= b ? true : false ;
		System.out.println("1. result : " + result);
		System.out.println("  ---------------");
		int n1 = 10;
		int n2 = 20;
		char result2;
		result2 = (n1 += n1) == n2 ? 'O' : 'X';
		System.out.println("2. result2 : " + result2);
		System.out.println("  ---------------");
	}

}

 

대입 연산자

=(우측 값을 좌측에 대입), *=, /=, %=, +=, -=

ex) a *= 3 => a = a * 3

package Java03;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 3;
        
        a = a + 1;
        System.out.println(a);
        // a = a + 1;은 a = 3 + 1;이 되며, 이를 왼쪽 a의 값에 대입을 하니 첫번째 출력은 4
        a += 1;
        System.out.println(a);
        // a가 4인 상황에서 a+=1은 1의 값을 a에 대입하라는 의미이니 5가 됩니다.
        a -= 1;
        System.out.println(a);
        // a가 5인 상황에서 a-=1은 1의 값을 a에 빼라는 의미이니 다시 4가 됩니다.
        a *= 2;
        System.out.println(a);
        // a가 4인 상황에서 a*=2는 2의 값을 a에 곱하라는 의미이니 8이 됩니다.
        a /= 2;
        System.out.println(a);
        // a가 8인 상황에서 a/=2는 2의 값으로 a를 나누라는 의미이니 4가 됩니다.
        a %= 2;
        System.out.println(a);
		// a가 4인 상황에서 a%=2는 2의 값으로 나눈 후, 나머지를 a에 대입하라는 의미이니 0이 됩니다.		
        
	}
}

 

'일단 해보는 코딩 > Java' 카테고리의 다른 글

[Java] If문, else if~,  (0) 2022.07.21
[Java] 스캐너(Scanner) 예제모음  (0) 2022.07.20
[Java] 변수 선언 규칙  (0) 2022.07.19
[Java] 변수의 타입  (0) 2022.07.19
[Java] 기본문법과 형변환  (0) 2022.07.18