[Java 기초] 2-3 자료형(논리 - Boolean)
(1) 논리형 (Boolean)
논리 자료형은 논리적으로 참과 거짓을 의미하는 true와 false의 값을 저장할 때 사용하는 자료형입니다.
0(거짓)과 1(참)로만 이루어져있기 때문에 메모리 크기는 1바이트 크기를 가지고 있습니다.
Boolean이 주로 제어문과 조건문쪽에서 사용합니다. 그러한 이유는 위에 설명했듯이 거짓과 참으로 이루어져있는 자료형이여서 조건, 제어문과 같이 사용하기에 적합합니다.
(예제 1)
public class Main {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println(a);
System.out.println(b);
boolean c = 1; //오류
}
}
해당 소스에서 boolean 자료형으로 선언한 뒤 a와 b는 값을 true와 false로 저장했고 c는 참과 거짓이 아닌 정수형 값을 넣었는데 이러한 경우 어떻게 될까요?
사진처럼 오류가 나오는것을 알 수 있습니다.
해당 오류를 해결 할려면 boolean형 타입으로 되어있는 변수명 중에 integer값을 가지고 있는 c의 변수를 주석처리 하거나 없애면 해결되는 소스입니다.
어? 분명히 boolean은 0과 1의 값만 있는 자료형이라고 하지 않았나? 왜 1의 값을 넣었는데 안되는거지? 라고 생각이 드실 수도 있습니다.
하지만 boolean은 값을 저장할 때에 true와 false를 값만 저장할 수 있기 때문에 c의 변수는 저장하고 컴파일을 했을 때 오류가 나오는게 정상입니다.
(출력)
이 외에도 조건문에 boolean 타입을 넣어서 하는 방법도 있습니다.
(예제 2)
public class Main {
public static void main(String[] args) {
boolean a = true;
if (a){ // 결과는?
System.out.println("참입니다.");
}else{
System.out.println("거짓입니다.");
}
}
}
해당 소스는 boolean 타입의 변수인 a가 true의 값을 가지고 있는 상태에서 조건문인 if문을 통해 a의 값이 있냐 없냐의 조건문입니다. 결론적으로 a의 값은 true 즉, 참의 값을 가지고 있기 때문에 if문 아래 절인 "참입니다"가 출력이 됩니다.
(출력)
(예제 3)
그렇다면. 위의 소스와 반대로 a의 값이 false라면. if문은 "참입니다."를 출력할까요? 아니면 "거짓입니다."를 출력할까요?
public class Main {
public static void main(String[] args) {
boolean a = false;
if (a){ // 결과는?
System.out.println("참입니다.");
}else{
System.out.println("거짓입니다.");
}
}
}
결과는 "거짓입니다"를 출력합니다.
(출력)
왜? "거짓입니다"를 출력할까요? 위에서 설명했을때는 if문을 통해서 a가 값이 있는 경우에 참, 없는 경우에 거짓일탠데 저희는 a라는 변수에 false라는 변수 값을 넣어줬거든요.
원래라면 참의 결과로 출력이 되는게 정상이지만 이 포스트에서 배우고 있는것은 "논리형 타입"이기 때문에 참과 거짓으로만 나누어져 있습니다. 그래서 false의 값을 가지고 있다? 그렇게 된 경우 조건문에 if(a){}처럼 a가 값이 있냐 없냐의 여부를 떠나서 else문으로 빠지게 되는겁니다.
이렇게 Boolean형 타입을 알아보는 시간을 가져봤습니다.
다음 포스트에서는 문자열(String)에 대해서 알아보도록 하겠습니다.
결론 -
1. Boolean은 참(true)와 거짓(false)의 값을 가지고 있고, 다른 값을 넣으면 오류가 난다.
2. Boolean의 주 사용처는 조건문이나 제어문에서 실행의 흐름을 바꾸기 위해서 사용이 된다.