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
반응형
'JAVA > 개념정리' 카테고리의 다른 글
[Java] 제어문(control flow statement) : 조건문 - if, switch (0) | 2022.07.29 |
---|---|
[Java] 연산자(Operator) - 2.다항연산자 (0) | 2022.07.28 |
[Java] 스캐너(Scanner) (0) | 2022.07.27 |
[Java] 상수(Constant) & 형변환(Casting) (0) | 2022.07.27 |
[Java] 실행 클래스 & 기능 클래스 (0) | 2022.07.27 |