기본원칙
1. 연산자 우선순위가 높은 것을 먼저 계산
(우선순위에서 가장 높은 것은 괄호)
2. 우선순위가 같다면 결합 방향에 따라 연산
연산자의 우선순위
예시
int a = 6+ 7;
(+)연산의 우선순위가 (=)연산의 우선순위보다 높다.
1. (+)연산을 먼저하고
2. a에 대입한다.
public class LogicalOp {
public static void main(String[] args) {
int num1 = 11;
int num2 = 22;
boolean result;
// 변수 num1에 저장된 값이 1과 100 사이의 수인가?
result = (1 < num1) && (num1 < 100);
System.out.println("1 초과 100 미만인가? " + result);
}
}
public class LogicalOp {
public static void main(String[] args) {
int num1 = 11;
int num2 = 22;
boolean result;
// 변수 num2에 저장된 값이 2 또는 3의 배수인가?
result = ((num2 % 2) == 0) || ((num2 % 3) == 0);
System.out.println("2 또는 3의 배수인가? " + result);
}
}
논리 연산자
논리 연산자 사용시 주의점: SCE
result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
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 + '\n'); // "
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
출력결과
이유
첫 번째 연산의 num1은 10이 되고, 이미 false이기 때문의 뒤의 num2 대입 연산은 생략되었으므로 num2는 그대로 0이다.
다음 줄의 num1은 10에서 +10 했기 때문에 20이 되고, 이미 true이기 때문에 뒤의 연산 역시 생략되었으므로 num2는 계속 0이다.
short num = 1;
num = -num;
}
}
short num = 1;
num = (short)(-num);
}
}
class AssignSteResult {
public static void main(String[] args) {
int num1 = 10, num2 = 20, num3 = 30;
num1 = num2 = num3;
class SCE {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
boolean result;
num1 += 10;
num2 += 10;
result = (num1 < 0) && (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2 + '\n'); // + "\n"??
num1 += 10;
num2 += 10;
result = (num1 > 0) || (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
class AddNum {
public static void main(String[] args) {
int result = 3 + 6;
System.out.println("3 + 6 = " + result);
result += 9;
System.out.println("3 + 6 + 9 = " + result);
result += 12;
System.out.println("3 + 6 + 9 + 12 = " + result);
}
}