package operator;
public class Ex4 {
public static void main(String[] args) {
/*
* 증감 연산자
* ++, --
*
*/
int a = 10;
++a; // 증감연산자(전위)를 사용하여 a값을 1만큼 증가시킴
System.out.println(a);
// => a값을 1만큼 증가시키는 다른 방법 : a = a + 1 또는 a += 1
// 증감연산자(후위)를 사용하여 a값을 1만큼 증가시킴
a++;
System.out.println(a);
--a; // 증감연산자를 사용하여 a값을 1만큼 감소시킴
System.out.println(a);
a--; // 증감연산자를 사용하여 a값을 1만큼 감소시킴
System.out.println(a);
System.out.println("================================");
int x = 5;
int y = ++x; // 전위(선행)연산자로 사용되는 증감연산자
// 먼저 x의 값을 1만큼 증가시킨 후 변수 y에 x값을 대입!
// 따라서, x가 5 -> 6으로 변화된 후 y에 저장되므로 y도 6이 저장
System.out.println(x + ", " + y); // 6, 6
int x2 = 5;
int y2 = x2++; // 후위(후행)연산자로 사용되는 증감연산자
// 먼저 x2의 값을 y2에 대입한 뒤, x2의 값을 1만큼 증가시킴
// 따라서, x2가 5일 때 y2에 저장되고,
// 그 후 x2의 값이 5 -> 6으로 증가
System.out.println(x2 + ", " + y2); // 6, 5
int i = 5;
int j = ++i;
// => 선행연산자이므로 i값을 1증가시킨 후 j에 저장(i = 6, j = 6)
System.out.println(j++);
// 후행연산자이므로 j값을 출력한 후, 1증가시킴
// => 6이 출력된 후, j값은 6 -> 7로 증가됨
System.out.println(--j);
// 선행연산자이므로 j값을 1 감소시킨 후, 출력
// => j값은 7 -> 6으로 감소된 후 6이 출력됨
System.out.println("===================================");
char ch = 'A';
// char 타입 변수 ch의 값을 1만큼 증가시키는 방법 3가지
// 1. 기본 산술연산자와 대입연산자를 조합하여 사용
ch = (char) (ch + 1); // 반드시 강제형변환 필수!
System.out.println(ch);
// 2. 확장 연산자를 사용
ch += 1; // 별도의 형변환 필요 없음
System.out.println(ch);
// 3. 증감연산자를 사용
ch++; // 별도의 형변환 필요 없음!
System.out.println(ch);
System.out.println("=================================");
int x4 = 10;
int y4 = x4-- + 5 + --x4;
System.out.println("x : " + x4 + ", y : " + y4);
}
}