Day 6 (23.01.02)

Jane·2023년 1월 2일
0

IT 수업 정리

목록 보기
6/124

1. 이항 연산자

  • 우선순위와 결합 방향에 따라 계산된다.
  • 우선순위가 같으면 → 방향
  • 대입 연산자 같은 경우는 ← 방향
public class EqualOp {

	public static void main(String[] args) {
		int num1 = 10, num2 = 20, num3 = 30;
		num1 = num2 = num3;
		// 대입 연산자의 결합방향이 오른쪽에서 왼쪽으로 진행
		
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
		
	}

}

1-1. 기본 산술 연산자

  • +, -, *, /, %
public class ArithOp {

	public static void main(String[] args) {
		int num1 = 7;
		int num2 = 3;
		
		System.out.println("num1 + num2 = " + (num1 + num2));
		System.out.println("num1 - num2 = " + (num1 - num2));
		System.out.println("num1 * num2 = " + (num1 * num2));
		System.out.println("num1 / num2 = " + (num1 / num2));
		System.out.println("num1 % num2 = " + (num1 % num2));
	}

}

[Console]
num1 + num2 = 10
num1 - num2 = 4
num1 * num2 = 21
num1 / num2 = 2
num1 % num2 = 1

1-2. 복합 대입 연산자

  • a = a+b ⇄ a += b
  • a = a+b ⇄ a -= b
  • a = a*b ⇄ a *= b
  • a = a/b ⇄ a /= b
  • a = a%b ⇄ a %= b
  • 복합대입 연산자는 형 변환을 하지 않아도 알아서 계산해준다.
public class CompAssignOp {

	public static void main(String[] args) {
		short num = 10;
		num = (short)(num + 77L);
		
		int rate = 3;
		rate = (int)(rate * 3.5);
		
		System.out.println(num + ", " + rate);
		
		num = 10;
		num += 77L;
		
		rate = 3;
		rate *= 3.5;
		
		System.out.println(num + ", " + rate);
	}

}

[Console]
87, 10
87, 10

1-3. 관계 연산자

  • <, >, <=, >=, ==, !=
public class RelationalOp {

	public static void main(String[] args) {
		System.out.println("3 >= 2 : " + (3 >= 2));
		System.out.println("3 <= 2 : " + (3 <= 2));
		System.out.println("7.0 == 7 : " + (7.0 == 7));
		System.out.println("7.0 != 7 : " + (7.0 != 7));
	}

}

[Console]
3 >= 2 : true
3 <= 2 : false
7.0 == 7 : true
7.0 != 7 : false

1-4. 논리 연산자

  • &&, ||, !
public class LogicalOp {

	public static void main(String[] args) {
		int num1 = 11;
		int num2 = 22;
		boolean result;
		
		result = (num1 > 1) && (num1 < 100);
		System.out.println("1 초과 100 미만? : " + result);
		
		result = ((num2 % 2) == 0) || ((num2 % 3) == 0);
		System.out.println("2 또는 3의 배수? : " + result);
		
		result = !(num1 != 0);
		System.out.println("0인가? : " + result);
	}

}

[Console]
1 초과 100 미만? : true
2의 배수 또는 3의 배수? : true
0이 아닌 것이 아닌가? : false

2. 이항 연산자 예제

2-1. 2의 배수 또는 3의 배수

boolean result = ((num%2)==0) || ((num%3)==0);

2-2. 77은 11의 배수이면서 7의 배수인가

	int num = 77;
	boolean result;

	result = ((num % 11) == 0) && ((num % 7) == 0);
	System.out.println("77는 11의 배수 이면서 7의 배수인가? : " + result);

[Console]
77는 11의 배수 이면서 7의 배수인가? : true

2-3. 홀수인가 짝수인가

	int a = 3;
	result = ((a%2)!=0); // result = ((a%2)==1)
	System.out.println("3은 홀수인가? " + result);
	result = ((a%2)==0);
	System.out.println("3은 짝수인가? " + result);

3. SCE (Short-Circuit Evaluation)

  • 논리 연산자에서 앞의 결과값이 해당된다면, 뒤의 연산은 넘어간다.
  • && : 앞이 false면 결과는 false이므로 지나감
  • || : 앞이 true면 결과는 true이므로 지나감
public class SCE {

	public static void main(String[] args) {
		int num1 = 0;
		int num2 = 0;
		boolean result;
		
		result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
		System.out.println("result : " + result);
		System.out.println("num1 : " + num1);
		System.out.println("num2 : " + num2);
		System.out.println("\n");
		
		result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
		System.out.println("result : " + result);
		System.out.println("num1 : " + num1);
		System.out.println("num2 : " + num2);
	}

}

[Console]
result : false
num1 : 10
num2 : 0


result : true
num1 : 20
num2 : 0

profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글