728x90

 

 

연산자(operator)

1.단항연산자

2.다항연산자

1+1에서 1하나가 1항

 

1.단항연산자

1)논리부정연산자

2)증감연산자

 

1)논리 부정연산자 : !

not으로도 부름

논리를 프로그램에서는 true/false를 말하며, 부정의 의미는 뒤집어 놓는다

true면 false로 false면 true로 값을 뒤집는 단항연산자

!false = true

!true = false

 

2)증감연산자 : ++, - -

피연산자의 값을 1 증가/감소시키는 연산자(operator)

-고정된 값 1씩만 증가/감소된다

-앞에 붙으면 전위 증감연산자(=전치) : 자신의 연산(++뜻함) 먼저하고 다른 연산 진행

-뒤에 붙으면 후위 증감연산자(=후치) : 다른 연산 먼저하고 자신의 연산(++뜻함) 진행

ex)

int a =3;
int b = 3;
int c = ++a; // 전위 : a는3. ++의 계산 먼저니, 1+3=4하고 c로 넘어가는 대입연산자가 나중에 연산됨
int d = b++; // 후위 : b는3. ++의 계산이 후니, 3인 b가 대입연산자 연산 먼저해서 d에 3이 들어가고 b는+1되서 4. 후에 출력해보면 b는 4나온다 

 

전위

a는3. ++의 계산 먼저니, 1+3=4하고 c로 넘어가는 대입연산자가 나중에 연산됨

후위

b는3. ++의 계산이 후이니, 3인 b가 대입연산자 연산 먼저해서 d에 3이 들어가고 b는+1되서 4. 후에 출력해보면 b는 4나온다

*후치의 경우 계산 적용이 나중이기 때문에 출력이나 값에 반영되는게 느리므로 주의

 

 

*후치 다른연산 먼저라는게 범위가 어디까지?

코드 한줄 기준 가장 마지막

 

 

문제 연습

package com.kh.operator;

// 증감 연산자
// 1.단항 연산자
// 2.다항 연산자
public class B_InDecrease {

		// 1.단항연산자
	public void method1() {
		// 1)전위 증감 연산자
		int num1 = 10;
		System.out.println("전위 증감 연산자 적용 전 : " + num1);		  // 10	
		System.out.println("++num1을 1회 수행 후 결과 : " + ++num1); 	// 11
		System.out.println("++num1을 2회 수행 후 결과 : " + ++num1);	  // 12
		System.out.println("++num1을 3회 수행 후 결과 : " + ++num1);  	// 13
		System.out.println("++num1을 4회 수행 후 결과 : " + ++num1);	  // 14
		System.out.println("++num1을 5회 수행 후 결과 : " + ++num1);  	// 15
		System.out.println("++num1을 5회 수행 후 결과 : " + (++num1)); // ++을 ()로 묶어도 괜찮
		System.out.println("후위 증감 연산자 적용 후 : " + (++num1));	    // 15  
	
		// 2)후위 증감 연산자	
		int num2 = 10; 
		System.out.println("후위 증감 연산자 적용 전 : " + num2);			// 10
		System.out.println("num2++을 1회 수행 후 결과 : " + num2++);	 // 10 출력은 10이나 실제값은 11
		System.out.println("num2++을 2회 수행 후 결과 : " + num2++);	 // 11
		System.out.println("num2++을 3회 수행 후 결과 : " + num2++);	 // 12
		System.out.println("num2++을 4회 수행 후 결과 : " + num2++);	 // 13
		System.out.println("num2++을 5회 수행 후 결과 : " + num2++);	 // 14
		System.out.println("num2++을 5회 수행 후 결과 : " + (num2++)); // ++을 ()로 묶어도 no prob
		System.out.println("후위 증감 연산자 적용 후 : " + num2++);	    // 15  
	}
	
	public void method2() {
		int num1 = 20;
		int result1 = num1++ * 3;					// 후치
		System.out.println("result1 : " + result1);	// 20*3=60 : 대입연산자로 대입되고 변수값 출력되고 후에 +1되기에 출력에 +1 미반영
		System.out.println("num1 : " + num1);		    // 21 : 위 계산 후 +1된 상태가 반영되서 출력값21
		
		int num2 = 20;
		int result2 = ++num2 * 3;					// 전치
		System.out.println("result2 : " + result2);	// 20+1=21*3=63
		System.out.println("num2 : " + num2);		    // 21 : 20+1된게 반영되서 21
		 
	}
	public void method3() {
		int a = 10;
		int b = 20;
		int c = 30;
		
		System.out.println(a++);// 10
		// a=11 b=20 c=30
		System.out.println((++a) + (b++));	// 32
		// 					         12 		20
		// a=12 b=21 c=30
		System.out.println((a++) + (--b) + (--c));// 61
		//					        12		  20   		29
		// a=13	b=20 c=29
		
		System.out.println(a);	// 13
		System.out.println(b);	// 20
		System.out.println(c);	// 2
	}
}
728x90
반응형
728x90

문제

 

 

<풀이과정>

 

 

728x90
반응형

+ Recent posts