언어 자료구조 알고리즘/디딤돌 Java 언어 Part1

[Java] 2.2.6 대입 연산자 2.2.7 증감 연산자 2.2.8 조건 연산자

언제나휴일 2016. 4. 4. 09:21
반응형

출간일 2016년 11월 28일

판매가 2000원

형태 ebook


이 책의 모든 내용은 http://ehpub.co.kr에 공개하고 있습니다.

학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.



 

2.2.6 대입 연산자

 

 대입 연산은 좌항의 표현으로 관리하는 변수에 설정하는 연산입니다. 따라서 대입 연산의 좌항에는 상수가 올 수 없습니다. 또한 대입 연산은 우선 순위가 가장 낮은 연산이라는 것에 주의해야 합니다.

 

 대입 연산은 = 기호를 이용하는 단순 대입 연산과 +=, *= 처럼 복합 대입 연산이 있습니다.

 

 단순 대입 연산은 우측 표현식의 값을 좌항에 설정하는 연산입니다. 복합 대입 연산은 자기 자신과 우측 피연산자 사이에 특정 연산을 수행한 결과를 좌항에 설정하는 연산입니다.

 

 예를 들어 i += 3; i = i + 3; 과 같은 표현입니다.

 

 

private static void exAssign() {

    int i = 0;

 

    i = 3+2;

    System.out.println("i = 3+2:"+i);

    //i+3 = 7; i+3의 연산 결과는 상수이므로 대입 연산자 좌항에 올 수 없음

 

    i+=4; //i = i+4;와 같은 표현

    System.out.println("i+=4:"+i);

}

i = 3+2:5

i+=4:9

[소스 2.16] exAssign

 

 

 

2.2.7 증감 연산자

 

 증감 연산자(++, --)는 단항 연산자로 자신의 값을 1을 증가하거나 감소하는 연산입니다.

 

 증감 연산자도 대입 연산처럼 설정하는 연산이므로 피연산자로 상수는 올 수 없습니다. 따라서 (i+3)++; 과 같은 표현은 문법적 오류가 있는 표현입니다.

 

 증감 연산자는 피연산자 앞에도 올 수 있고 뒤에도 올 수 있습니다. 연산 기호가 피연산자 앞에 오든 뒤에 오든 자기 자신의 값을 1 증가 혹은 감소하는 것은 마찬가지입니다. 하지만 연산 결과에서는 차이를 갖습니다.

 

 만약 연산 기호가 피연산자 앞에 오면 연산 결과는 연산을 수행하고 난 후의 자기 자신입니다. 예를 들어 i 변수의 값이 3일 때 re = ++i;을 수행하면 i 1 증가한 4이며 연산 결과도 4이므로 re 값도 4입니다.

 

 하지만 연산 기호가 피연산자 뒤에 오면 연산 결과는 연산을 수행하기 전의 값입니다. 예를 들어 i 변수의 값이 3일 때 re = i++;을 수행하면 i1 증가한 4이며 연산 결과는 수행 전의 값이 3입니다. 따라서 re의 값은 3으로 설정합니다.

 

private static void exIncDecrement() {

    int i = 0;

    int re = 0;

    //(i+3)++; (i+3)의 연산 결과는 상수이므로 증감연산자의 피연산로 올 수 없음

    i=3;

    re = ++i;

    System.out.println("re:"+re + ", i:"+i);

    i = 3;

    re = i++;

    System.out.println("re:"+re + ", i:"+i);

}

re:4, i:4

re:3, i:4

[소스 2.17] exIncDecrement

 

2.2.8 조건 연산자

 

 조건 연산(?:)은 피연산자를 3개를 두는 삼항 연산으로 좌항의 연산이 참이면 두번째 피연자를 연산 결과로 하고 거짓이면 세번째 피연산자를 연산 결과인 연산입니다.

 

 예를 들어 re = (i>j) ? i : j;처럼 표현하면 i j보다 크면 re i를 설정하고 그렇지 않으면 re j를 설정하라는 표현으로 i j 중에 큰 값을 re에 설정하는 표현입니다. 하지만 실제 프로그래밍에서 조건에 따라 수행할 구문을 선택할 때 if 조건문이나 if else 조건문을 사용할 수 있고 보다 풍부한 표현을 할 수 있어 조건 연산을 자주 사용하지는 않습니다.

 

private static void exCondition() {

    int i = 0;

    int j = 0;

    int re = 0;

 

    i = 3;

    j = 4;

    re = (i>j) ? i : j;

    System.out.println("re:"+re);

 

    i = 4;

    j = 3;

    re = (i>j) ? i : j;

    System.out.println("re:"+re);

}

re:4

re:4

[소스 2.18] exCondition

 

반응형