JAVA

[JAVA] 06. 연산자

TJK0219 2022. 10. 17. 09:37

1. 단항연선자

 

증감연산자에서 헷갈릴 수 있는 부분

		int a = 10;
		int b = ++a; //증감연산자로 a에 +1이 되었기 때문에 a는 현재 11의 값을 가짐
		System.out.printf("a : %d\nb : %d\n", a, b);
		
		int c = 10;
		int d = c++; //증감연산자로 c에 +1이 되었기 때문에 c는 현재 11의 값을 가짐
					 //d는 기존 c의 값을 받았기 때문에 아직 10 값을 가지고 있음.
		System.out.printf("c : %d\nd : %d\n", c, d);
		
		System.out.println("=========================");
		
		int num1 = 20;
		int result1 = ++num1 * 3;
		System.out.printf("num1 : %d, result1 %d\n", num1, result1);
		
		int num2 = 20;
		int result2 = num2++ * 3; // num2=20(21), result2=60
								  // num2=21, result=60
		System.out.printf("num2 : %d, result2 %d", num2, result2);

 

 

2. 이항연산자

 

이항연산자에서 나누기의 나머지 값 % 연산자는 활용도가 높고 자주 활용되니 꼭 기억해두는 것이 좋음.

활용 예시

ex1) 값 % 0 == 0 라는 건 짝수라는 의미
ex2) 값 % 2 == 1 라는 건 홀수라는 의미
ex3) 값 % 5 == 0 라는 건 5의 배수라는 의미

 

 

연습해볼 것

int a = 5;
int b = 10;
int c = (++a) + b;
int d = c / a ;
int e = c % a ;
int f = e++;
int g = (--b) + (d--);
int h = 2;
int i = a++ + b / (--c / f) * (g-- - d) % (++e + h);

System.out.println("a : " + a);
System.out.println("b : " + b);
System.out.println("c : " + c);
System.out.println("d : " + d);
System.out.println("e : " + e);
System.out.println("f : " + f);
System.out.println("g : " + g);
System.out.println("h : " + h);
System.out.println("i : " + i);

 

비교연산자

int a = 10;
		int b = 25;
		
		System.out.println("a == b : " + (a == b));
		System.out.println("a <= b : " + (a <= b));
		
		boolean result = a > b;
		System.out.println("result : " + result);
		
		System.out.println(a * 2 > b / 5);
		System.out.println("a가 짝수인가 : " + (a % 2 == 0)); 
		System.out.println("a가 홀수인가 : " + !(a % 2 == 0));
		System.out.println("a가 홀수인가 : " + (a % 2 != 0));

 

비교연산자에서 데이터를 입력 받는 경우

Scanner sc = new Scanner(System.in);
		
		System.out.print("첫번째 정수 : ");
		int num1 = sc.nextInt();

		System.out.print("두번째 정수 : ");
		int num2 = sc.nextInt();
		
		System.out.println("첫번째 정수가 두번째 정수보다 큽니까? " + (num1 > num2));
		System.out.println("첫번째 정수가 짝수 입니까? " + (num1 % 2 == 0));
		System.out.println("두번째 정수가 홀수 입니까? " + (num2 % 2 != 0));
		
		//특이케이스 (문자와 숫자간의 대소비교 가능)
		System.out.println(num2 < 'A'); //영문자는 아스키 코드로 확인 가능.
		// 'A' ~ 'Z' 65 ~ 90

 

 

3. 삼항연산자

 

삼항연산자 = (연산) ? (연산 값이 true이면 괄호 안에 값 반환) : (연산 값이 false이면 괄호 안에 값 반환)

텍스트를 정리해보자면

 

a = (연산)b = (연산 값이 true이면 괄호 안에 값 반환)c = (연산 값이 false이면 괄호 안에 값 반환)

삼항연산자 = a ? b : c 의 구조를 가지고 있다.

 

기본적으로 연산이 맞을 경우와 틀릴 경우 두 가지를 계산하기 때문에 일종의 조건문이다.

 

- 삼항연산자를 활용한 재미있는 문제

	public static void main(String[] args) {

		int a = 123;				// 사과의 개수
        int b = 10;					// 바구니 1개에 담을 수 있는 사과의 개수
        int result = ( ?? ); 		// 사과를 모두 담기 위해 필요한 바구니의 개수
        
        System.out.println("필요한 바구니의 수 : " + result);

    }

 

4. 복합대입연산자

 

복합대입연산자는 증감연산자처럼 특정 값으로 값에 변화를 줄 수 있다.

a = a + 3;		=>		a += 3;
a = a - 3;		=>		a -= 3;
a = a * 3;		=>		a *= 3;
a = a / 3;		=>		a /= 3;
a = a % 3;		=>		a %= 3;

 

알아두면 좋은 것

1. 구체적인 이유는 아직 모르겠지만 복합대입연산자를 사용하면 처리 속도가 증가하기 때문에 사용을 권장한다고 한다.

2. 복합대입연산자는 실무에서 주로 +와 -를 사용한다.

 * 이건 생각해보면 복잡한 연산을 넣게 될 경우 값 활용이 좀 난해해져서가 아닐까 싶다. 혼자 개발하는게 아니니까

3. 특이케이스로 문자열도 적용 가능 (단, 당연하게도 문자열은 +만 가능)

		String str = "Hello";
		str += " world";
		System.out.println(str);