
논리연산?
조건의 결과에 따라true||false로 나뉘는 연산.
a > 10 && a < 30이라는 조건이 있을 때 a가 5라면 해당 연산의 값은true가 된다.

& and : &&와 마찬가지로 and를 의미 : 두 조건 모두 충족| or : ||와 마찬가지로 or를 의미 : 두 조건 중 하나만 충족^ 배타적 논리합 exclusive or(xor) : 주어진 2개의 명제 가운데 1개만 참일 경우를 판단a = 31 일때 a > 10 ^ a < 20이면 명제 중에 1개만 참이니 답은 true※ & 와|는 && ||와 다르게 동작할 수 있음
※ 비교 연산자, 논리 연산자와 함꼐 산술 연산자도 사용할 수 있음
System.out.println()를 사용해 논리형 값 출력하기.
public class BooleanType {
public static void main(String[] args){
// main method 안의 boolean 변수이므로 초깃값 할당
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false;
boolean flag5 = false;
flag1 = 10 > 5;
flag2 = 10 < 5;
flag3 = 10 >= 5;
flag4 = 10 <= 5;
flag5 = 10 == 5;
System.out.println(flag1); //예상true
System.out.println(flag2); //예상false
System.out.println(flag3); //예상true
System.out.println(flag4); //예상false
System.out.println(flag5); //예상false
}
}
결과

System.out.println()를 사용해 논리연산자를 실행한 결과값 출력하기.
public class BooleanType2 {
public static void main(String[] args){
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
boolean flag4 = false;
boolean flag5 = false;
boolean flag6 = false;
flag1 = 10 > 5 && 5 < 20;
flag2 = 10 > 5 & 5 < 20;
flag3 = 10 > 5 || 5 < 20;
flag4 = 10 > 5 | 5 < 20;
flag5 = 10 > 5 ^ 5 < 20;
flag6 = !flag5;
System.out.println(flag1); //예상true
System.out.println(flag2); //예상true
System.out.println(flag3); //예상true
System.out.println(flag4); //예상true
System.out.println(flag5); //예상false
System.out.println(flag6); //예상true
}
}
결과

10 < 5 && 5 < 20의 명제가 있을 때
&& : 앞의 식 10 < 5가 false라면 뒤의 식은 실행하지 않는다.& : 앞의 식 10 < 5가 false여도 뒤의 식은 실행한다.10 < 5 || 5 < 20의 명제가 있을 때
|| : 앞의 식 10 < 5가 false라면 뒤의 식은 실행하지 않는다.| : 앞의 식 10 < 5가 false여도 뒤의 식은 실행한다.&&와 &, ||와|의 결과 확인해보기
public class BooleanType3 {
public static void main(String[] args){
int x = 1;
int y = 2;
if(x == 2 && ++y == 3){
System.out.println("&&의 결과 : x="+ x + "y="+y ); //실행안함
}
if(x == 1 & ++y == 3){
System.out.println("&의 결과 : x="+ x + "y="+y ); //실행
}
if(x == 2 || ++y == 2){
System.out.println("||의 결과 : x="+ x + "y="+y ); //실행안함
}
if(x == 1 | ++y == 2){
System.out.println("|의 결과 : x="+ x + "y="+y ); //실행
}
}
}
결과

true, false는 1bit만으로도 충분히 표현이 가능하지만 컴퓨터에서 자료를 표현하는 최소의 메모리는 8bit = 1byte이므로 boolean형에서 소모되는 메모리는 1byte이다.