-
2. 자바 변수와 자료형 (2) boolean자바(Java) 강의 2019. 3. 3. 15:15
이 포스트에서는 자바 프로그래밍 언어의 기본 자료형인 char, boolean, byte, short, int, long, float, double중에서 boolean에 대해 알아보도록 하겠다.
예상 독자
- 자바를 배우고 싶은 누구나
- JDK와 IDE를 설치한 자바 학습자. ( 1. 자바 설치 및 개발환경 설정 )
- char를 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (1) char )
목표
- boolean
- 논리식 (boolean expression 또는 logical expression)
boolean
boolean자료형의 값에는 참/거짓(true/false) 딱 2가지만이 있다. 실습으로 배워보자.public class Main {
public static void main(String[] args) {
System.out.println(true);
}
} 실행 결과: true이번엔 false를 출력 해 보자.public class Main {
public static void main(String[] args) {
System.out.println(false);
}
} 실행 결과:false
이번엔 변수 expression에 할당 해 보자.public class Main {
public static void main(String[] args) {
boolean expression = true;
System.out.println(expression);
}
} 실행 결과:true
expression에 들어있는 값이 'true'이기 때문에 true를 출력하는 것을 알 수 있다. 이번엔 fasle도 해 보자.public class Main {
public static void main(String[] args) {
boolean expression = false;
System.out.println(expression);
}
} 실행 결과:false
expression에 false가 들어있기 때문에 false가 출력되는 것을 확인 할 수 있다. 이게 다이다. boolean자료형은 이렇게 간단하다.논리식 (boolean expression 또는 logical expression)
프로그래밍 언어에서 논리식(boolean expression/logical expression)이란, 어떤 식(expression)의 계산값이 참 또는 거짓인 식을 말한다. 예를 들어 생각 해 보자.- 삐멜은 소프트웨어 엔지니어인가? - 참
- 자바는 프로그래밍 언어인가? - 참
- boolean에는 참/거짓이외의 값을 넣을 수 있는가? - 거짓
인간의 언어로 생각 했을 때 위의 질문들이 바로 boolean expression이다. 그렇다면 프로그래밍 언어에서 boolean expression은 어떻게 표현 할까? 자바에서는 boolean expression을 표현하기 위해 ==, <, <=, >, >=, &&, ||, ! 같은 논리 연산자(boolean operator)들을 사용한다==, <, <=, >, >=
- 삐멜의 직업 == 소프트웨어 엔지니어 ? 참
- 138 < 193 ? 참
- 33 <= 0 ? 거짓
- 20 > 20 ? 거짓
- 10 >= 9 ? 참
예를들어 살펴보자. 138 < 193을 출력 해 보자. 갑자기 숫자가 나왔다고 놀라지 말자. 정수형이라는 자료형인데 바로 이후의 포스트에서 설명 할 것이다. 지금 나오는 숫자들에 대해서는 상식적인 선에서 생각하면 된다.public class Main {
public static void main(String[] args) {
System.out.println(138 < 193);
}
} 실행 결과: true33 <= 0 을 출력 해 보자. <=는 작거나 같다 라는 뜻이다. 마찬가리고 >=는 크거나 같다는 뜻이다.public class Main {
public static void main(String[] args) {
System.out.println(33 <= 0);
}
} 실행 결과: false대충 이게 뭔지 감이 오는가? 그렇다면 나머지 두 경우를 연습으로 혼자 해보도록 해라.이런 boolean 식(expression)은 꼭 숫자에만 해당되는 것이 아니다. 아래를 보자.public class Main {
public static void main(String[] args) {
char character = 'c';
System.out.println(character == 'c');
}
} 실행 결과: true지난 포스트에서 다뤘던 char 자료형의 변수 character를 만들어 'c'를 할당했다. 그리고 character == 'c'를 비교했다. character에 'c' 가 할당되어 있기 때문에 두 값은 같은 char값 'c'이다. 따라서 true의 결과가 나온다. character의 값을 'a'로 바꾸고 실행 해 보아라. 그리고 결과 값이 false가 나오는지 확인 해 보아라.public class Main {
public static void main(String[] args) {
char character = 'c';
boolean expression = (character == 'c');
System.out.println(expression);
}
} 실행 결과:true
character == 'c'는 그 결과 값이 boolean이기 때문에 당연히 boolean형의 변수에 할당 가능하다. 위를 실행 해 보자. boolean형인 expression에 (character == 'c') 우리가 System.out.println에 넣어줬던 식과 똑같은 식을 할당했다. 이 식의 결과값이 boolean이기 때문에 아무 에러 없이 실행된다.참고! () <-괄호는 사실 필요 없다. 초심자들이 =와 ==를 자주 헷갈려 하는 것을 고려해 괄호로 어느부분이 할당부분이고 어느부분이 식(expression)부분인지 나눠놓았다. 익숙해지면 괄호 없이 사용 해 보도록 하자.&& (논리 AND 연산자)
이번엔 && 에 대해서 알아보자. && 은 AND라는 뜻이다. expression 1 AND expression 2 에서 expression 1과 expression 2가 모두 참일 때만 true이고 나머지는 모두 false이다.public class Main {
public static void main(String[] args) {
char character = 'c';
boolean expression = (character == 'c') && (3 < 10);
System.out.println(expression);
}
} 실행 결과:true
위의 예제에서 expression1은 (charadter == 'c') 이고 expression2는 (3 < 10)이다. 첫번째 식이 참이고, 두번째 식도 참이므로 true && true는 true가 된다. 10을 -1로 바꿔보자.public class Main {
public static void main(String[] args) {
char character = 'c';
boolean expression = (character == 'c') && (3 < -1);
System.out.println(expression);
}
} 실행 결과:false
10을 -1로 바꾸면 첫번째 식인 (character == 'c')는 참이지만 (3 < -1)은 거짓이다. 따라서 true && false는 false가 된다.[논리 AND 연산자 표]식(expression)
값
true && true
true
true && false
false
false && true
false
false && false
false
|| (논리 OR 연산자)
||에 대해서 알아보자. AND다음에 나왔으니 감이 오지 않는가? 그렇다 얘는 OR를 뜻하는 boolean 연산자이다. expression 1 || expression 2이렇게 하면 두 식중 하나만 참이면 참이다. 두 식 모두 거짓이어야 거짓이된다. 예제를 보자.public class Main {
public static void main(String[] args) {
char character = 'c';
boolean expression = (character == 'c') || (3 < -1);
System.out.println(expression);
}
} 실행 결과: true위의 예제는 &&를 이용했던 것과 다르게 값이 true인 것을 확인 할 수 있다. 왜? 비록 (3 <- 1)이 false일지라도 (character == 'c')가 참이므로 true || false는 true가 된다.[논리 OR 연산자 표]식 (expression)
결과
true || true
true
true || false
true
false || true
true
false || false
false
! (논리 NOT 연산자)
! 연산자는 boolean 값을 그 반대로 변경한다. true앞에 !true하고 !를 붙이면 Not true, 즉 false가 된다.public class Main {
public static void main(String[] args) {
boolean expression = true;
System.out.println(!expression);
}
} 실행 결과: false이번엔 expression에 false를 넣고 실행 해 보라. true가 나오는가? ! 의 의미가 이해되는가?[논리 NOT 연산자 표]식 (Expression)
결과
!true
false
!false
true
끝
boolean expression에서 왜 &가 아닌 &&를 사용하고 |가 아닌 ||를 사용할까? 아쉽게도 &와 |는 이미 비트연산자(bitwise expression)이라는 연산 기호로 사용되고 있기 때문에 논리식에서는 &&와 ||를 사용하고 있다. 그래서 비트 연산자와 헷갈리지 않기 위해 논리 AND, 논리 OR등으로 부르는 것이다. &와 &&는 다른 연산자이기 때문에 주의해야한다. 또 =와 ==도 다른 연산자이므로 주의해야한다. 처음 자바를 배울 때 많이 하는 실수 중 하나가 =와 ==를 혼동해서 사용하는 것이다. =는 변수에 값을 할당할 때 쓰는 것이고 ==는 비교 할 때 사용하는 연산자라는 사실을 잊지 말자. 다음 포스트에서는 정수형에 대해 설명하도록 하겠다.다음 포스트: 2. 자바 변수와 자료형 (3) byte, short, int, long
'자바(Java) 강의' 카테고리의 다른 글
3. 자바 조건문 (1) if-else (6) 2019.03.06 2. 자바 변수와 자료형 (4) float, double (7) 2019.03.05 2. 자바 변수와 자료형 (3) byte, short, int, long (11) 2019.03.04 2. 자바 변수와 자료형 (1) char (3) 2019.03.02 1. 자바 설치 및 개발환경 설정 (1) 2019.02.27 댓글