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);