ตัวแปรที่สามารถมีได้เพียงค่าใดค่าหนึ่งจากสองค่าเท่านั้น คือ จริงหรือเท็จ คือตัวแปรประเภทบูลีน และจริงและเท็จคือปริมาณโดยตรงแบบบูลีน คุณสามารถกำหนดตัวแปรบูลีนที่ตั้งชื่อสถานะได้โดยใช้คำสั่งต่อไปนี้:
สถานะบูลีน=จริง
คำสั่งนี้เริ่มต้นสถานะตัวแปรด้วยค่าจริง คุณยังสามารถใช้คำสั่งการมอบหมายเพื่อกำหนดค่าให้กับตัวแปรบูลีนได้ เช่น ประโยคที่ว่า
รัฐ=เท็จ
ตั้งค่าสถานะตัวแปรให้เป็นเท็จ
ปัจจุบัน เราไม่สามารถทำอะไรได้มากไปกว่าการกำหนดค่าให้กับตัวแปร Boolean แต่ดังที่คุณจะเห็นในบทถัดไป ตัวแปร Boolean มีประโยชน์ในการตัดสินใจในโปรแกรม โดยเฉพาะอย่างยิ่งเมื่อเราสามารถใช้นิพจน์เพื่อสร้าง It มีประโยชน์มากกว่าสำหรับผลลัพธ์บูลีน
มีตัวดำเนินการหลายตัวที่รวมค่าบูลีน ซึ่งรวมถึง: บูลีน AND (AND), บูลีน OR (oR) และบูลีน NOT (ซึ่งสอดคล้องกับ &&, 11 และ ! ตามลำดับ) รวมถึงตัวดำเนินการเปรียบเทียบที่สร้างผลลัพธ์บูลีน แทนที่จะเรียนรู้สิ่งเหล่านี้ในนามธรรมตอนนี้ เราจะเลื่อนไปยังบทถัดไป ซึ่งเราจะเห็นได้ในแบบฝึกหัดว่าจะนำไปใช้เพื่อเปลี่ยนลำดับการทำงานของโปรแกรมได้อย่างไร
สิ่งหนึ่งที่คุณต้องทราบคือตัวแปรบูลีนแตกต่างจากประเภทข้อมูลพื้นฐานอื่นๆ ไม่สามารถแปลงเป็นประเภทพื้นฐานอื่นได้ และประเภทพื้นฐานอื่นๆ ไม่สามารถแปลงเป็นประเภทบูลีนได้
การเปรียบเทียบสามวิธีในการสร้างวัตถุบูลีนใน Java
วิธีแรกทั่วไปที่ Java สร้างอ็อบเจ็กต์บูลีนคือผ่านโอเปอเรเตอร์ใหม่
บูลีน boolean1 = บูลีนใหม่ (1==1);
ประการที่สองคือผ่านค่าวิธีการคงที่
บูลีน boolean1 = บูลีน.valueOf(1==1);
แบบที่ 3 มวยอัตโนมัติหลัง JDK1.5
บูลีน บูลีน1 = 1==1;
ความแตกต่างระหว่างทั้งสามวิธีนี้คืออะไร?
มาดูโค้ดกันก่อน
บูลีน[] boolean1 = บูลีนใหม่[100];บูลีน[] boolean2 = บูลีนใหม่[100];บูลีน[] boolean3 = บูลีนใหม่[100];สำหรับ (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}สำหรับ (int i = 0;i < 100;i++){ boolean2[i] = บูลีนใหม่(1==1);}สำหรับ (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("บูลีนใหม่: " + String.valueOf(boolean2[1] == boolean2[2]));System.out.println("การตัดคำอัตโนมัติ: " + String.valueOf(boolean3[1] == boolean3[2]));
ผลลัพธ์คือ:
valueOf: truenew บูลีน: falseauto wrap: true
ทำไมสิ่งนี้ถึงเกิดขึ้น?
เหตุผลก็คืออ็อบเจ็กต์บูลีนที่สร้างด้วย new จะสร้างอ็อบเจ็กต์อินสแตนซ์ใหม่อย่างต่อเนื่อง ในขณะที่ valueOf ส่งคืนตัวแปรสมาชิกแบบสแตติกในคลาสบูลีน และไม่สร้างตัวแปรอินสแตนซ์ที่เหมือนกันจำนวนมาก การตัดคำอัตโนมัติจะคล้ายกับ valueOf
ในความเป็นจริง เอกสาร jdk ยังแนะนำให้ใช้ valueOf แทน new เพื่อสร้างอ็อบเจ็กต์คลาส Boolean