"안녕하세요, 아미고! 저는 논리 문제를 푸는 데 너무 몰두해서 당신이 들어오는 것을 눈치채지 못했습니다. 여기 당신을 위한 것이 있습니다: 악어가 날면 눈은 하얗습니다. 날아다니는 악어가 있습니다. 결론은 무엇입니까?"

"음... 그럼 눈이 하얗다는 결론을 내린 건가요?"

"훌륭합니다! 입문 테스트를 통과했습니다. 다음 주제를 마스터할 준비가 되었습니다. '논리 연산자'라고 합니다. 그리고 부울 논리부터 시작하겠습니다. 본능적으로 이미 알고 있습니다. 결국 로봇입니다. . Java 언어와 일치하도록 설정을 조정하기만 하면 됩니다."

"부울 논리? 최근에 부울 유형에 대해 들었습니다..."

"예, 여기에 직접적인 연결이 있습니다. 부울 식은 참 또는 거짓만 될 수 있습니다. 공교롭게도 이런 종류의 논리는 모두 참 또는 거짓인 식과 그러한 식의 조합에 관한 것입니다. 예를 들어 식 18 < 25는 항상 참이고 7 < 5는 항상 거짓입니다. 표현식(i < 10)은 i의 값에 따라 달라집니다. 예를 들어 표현식이 참으로 평가되면 프로그램에 작업을 요청할 수 있습니다."

"아, 알겠습니다. 부울 표현식을 사용하면 논리적 결론을 내릴 수 있을 뿐만 아니라 프로그램에서 포크를 만들 수도 있습니다."

"정확합니다. 가장 중요한 것은 작성 방법을 배우는 것입니다. 예를 들어 Java에서는 식을 그냥 쓸 수 없습니다 18 < age <65. 이것은 구문적으로 올바르지 않으며 프로그램이 컴파일되지 않습니다.

"하지만 다음과 같이 작성할 수 있습니다.

(18 < age) AND (age < 65)

물론 우리는 실제로 ENGLISH 단어를 사용하지 않습니다 AND. 대신 부울 연산자가 필요합니다 . 즉, 'AND'는 다르게 표현됩니다.

AND"Java에는 (&&), OR(||), NOT(!)의 세 가지 논리 연산자가 있습니다 .

좋은 소식은 괄호를 사용하여 복잡한 논리식을 구성 할 수 있다는 것입니다 .

나쁜 소식은 Java 개발자가 및라는 단어 대신 C 언어 의 표기법을 사용하기로 결정했다는 것입니다 .andornot

화면을 보십시오:

논리 연산자 기대 현실
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"실제로 그렇게 나쁘지는 않아... 꽤 컴팩트해. 거의 외울 뻔했어."

"음, 놀랍군요. 다음은 Java에서 논리 연산자를 사용하는 몇 가지 예입니다.

표현 해석 설명
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

비교 연산자 및 부울 변수 사용 예

"기억하세요, 아미고, 논리식을 쓸 수 있는 곳이면 어디든 논리 변수를 쓸 수 있습니다."

"어떻게한다는거야?"

"논리식은 다양한 방식으로 작성할 수 있습니다. 예를 들면 다음과 같습니다.

암호 설명
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
나이 값이 ~ 사이 18이면 65"일할 수 있습니다"라는 문구가 표시됩니다.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
변수를 만들고 isYoung식의 첫 번째 부분을 변수로 옮겼습니다. age >= 18우리 는 단순히 age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
우리는 isOld 변수를 만들고 식의 두 번째 부분을 이 변수로 옮겼습니다. 또한 age <= 65age > 65.

if"이 세 가지 예는 동일합니다. 두 번째 예에서만 표현식의 일부를 명령문에서 별도의 부울 변수( )로 옮겼습니다 isYoung. 세 번째 예에서는 표현식의 두 번째 부분을 두 번째 변수( isOld)로 옮겼습니다. 그런데 부울 변수의 기본값은 입니다 false."

"기억하겠습니다. 그러길 바랍니다."

논리 산술

"이제 논리적 연산을 간단히 살펴보겠습니다. 그들은 매우 간단하고 논리적인(그렇지 않으면 어떻게!) 규칙을 따릅니다.

"먼저 연산자가 어떻게 작동하는지 봅시다 . 또는 분리OR 라고도 합니다 .||

표현 결과
true || true true
true || false true
false || true true
false || false false

a || b"이제 테이블을 기반으로 한 표현식의 결과가 무엇인지 추론할 수 있습니까 ?"

"알겠어요!" 식의 값은 true식의 적어도 하나의 용어가 인 경우 입니다 true. 둘 다 이면 false결과는 입니다 false.

"맞아요. 당신은 똑똑하니까요. 테이블을 다시 한 번 보고 그것이 false0이고 true1이라고 상상해 보세요. 그렇게 보면 ||연산자의 행동이 일반적인 산술의 무언가를 연상시키나요?"

"음... 뭐, 덧셈 같은 건데... 그런데 덧셈을 하면 1+1이 1이 아니잖아."

||"0과 1만 가지고 작업하면 같다는 의미가 있습니다. 하지만 지금은 신경쓰지 마세요. 중요한 것은 연산과 덧셈 의 유사성을 알아차렸다는 것입니다. 이 연산을 종종 '논리적 덧셈'이라고 부른다는 사실에 놀라지 마십시오.

"알았어요."

"이제 AND, 일명 &&, 일명 접속사 연산자가 등장합니다.

표현 결과
true && true true
true && false false
false && true false
false && false false

"내가 이해하는 바에 따르면 식의 결과는 true식을 구성하는 두 값이 모두 인 경우에만 입니다 true. 그렇지 않으면 항상 입니다 false."

"잘했어, 아미고! 넌 스펀지처럼 이 모든 것을 흡수하고 있어. 산술과 또 다른 유사점이 보이니?"

"곱셈!"

"정확합니다. 그래서 여기에 '논리적 곱셈'이 있습니다."

"다음으로 논리 역수 라고도 하는 NOT연산자를 살펴봅니다 .!

표현 결과
!true false
!false true

"음, 여기에서는 모든 것이 매우 간단합니다. 연산자가 true로 변경되거나 false그 반대의 경우도 마찬가지입니다."

"맞습니다. 다음은 유용한 표현입니다."

표현 결과
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b