x << 2 + 1
data & 0xFF == 0
x < -1 || x > 3 && x < 5
연산 수행 직전에 발생하는 피연산자의 자동 형변환
int i = 5, j = 5;
System.out.println(i++); // 참조하고 증가
System.out.println(++j); // 증가하고 참조
System.out.println("i = " + i + ", j = " + j);
// 5
// 6
// i = 6, j = 6
10 / 4 = 2
10 / 4.0f = 2.5f
10 < x && x < 20
x % 2 == 0 || x % 3 == 0
(x % 2 == 0 || x % 3 == 0 ) && x % 6 != 0
'0' <= ch && ch <= '9'
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
OR 연산의 경우 연산결과가 '참'인 확률이 높은 피연산자를 연산자의 왼쪽에 두면, 우측 피연산자 값을 평가하지 않을 확률도 높아지므로, 더 빠른 연산 결과를 얻을 수 있다.
반대로, AND 연산의 경우 좌측 연산이 '거짓' 이라면 우측 피연산자를 평가하지 않으므로 마찬가지 결과를 얻는다.
public class OperatorEx26 {
public static void main(String[] args) {
int a = 5;
int b = 0;
System.out.printf("a=%d b=%d%n", a, b);
System.out.printf("a!=0 || ++b != 0 = %b%n", a != 0 || ++b != 0); // 좌측 피연산자가 참이라서, 우측 실행 안됨
System.out.printf("a=%d b=%d%n", a, b);
System.out.printf("a==0 && ++b != 0 = %b%n", a == 0 && ++b != 0); // 좌측 피연산자가 거짓이라, 우측 실행 안됨
System.out.printf("a=%d b=%d%n", a, b);
}
}
// 논리부정 연산자 활용한 토글 버튼 구현
public class OperatorEx27 {
public static void main(String[] args) {
// 인스턴스 생성
Toggle toggle = new Toggle();
toggle.click();
toggle.click();
toggle.click();
Toggle2 toggle2 = new Toggle2();
toggle2.onClick2(true);
toggle2.onClick2(false);
}
}
// 클래스 변수 활용
class Toggle {
static boolean b = true;
void click (){
Toggle.b = !b;
if (b) {
System.out.printf("참 : %b%n", b);
}
else {
System.out.printf("거짓 : %b%n", b);
}
}
}
class Toggle2 {
private boolean mtnIsActive;
void onClick2 (boolean b) {
if (b) {
System.out.printf("참 : %b%n", b);
}
else {
System.out.printf("거짓 : %b%n", b);
}
mtnIsActive = !mtnIsActive;
}
}