1. โอเปอเรเตอร์
ผู้ประกอบการรวมถึงสิ่งต่อไปนี้:
ผู้ประกอบการเลขคณิตผู้ดำเนินการเปรียบเทียบผู้ประกอบการผู้ประกอบการตรรกะตัวดำเนินการบิตตัวดำเนินการบิต Trigonometric Operator
ตัวดำเนินการบิตที่ใช้กันทั่วไปน้อยที่สุดก็เป็นเครื่องที่อยู่ใกล้กับคอมพิวเตอร์พื้นฐาน
1. ตัวดำเนินการเลขคณิต
(1) การใช้งาน +: เพิ่มเติม, ตัวเลขบวก, อักขระการต่อสายสตริง
(2) ปัญหาหนึ่งควรได้รับความสนใจเมื่อแบ่งจำนวนเต็ม: หารด้วยกันและคุณจะได้รับจำนวนเต็มเท่านั้น ในการรับทศนิยมคุณสามารถแปลงข้อมูลเอง *1.0 นั่นคือแปลงข้อมูลตัวเองเป็นประเภทจุดลอยตัวก่อน
2. ผู้ดำเนินการที่ได้รับมอบหมาย
symbol = += -= *= /= %=
หมายเหตุ: = เป็นตัวดำเนินการที่ได้รับมอบหมายพื้นฐานและผู้อื่นเป็นผู้ดำเนินการขยายการมอบหมาย
คำถามสัมภาษณ์:
(1) สั้น s = 1, s = s+1;
(2) สั้น s = 1, s+= 1;
มีปัญหาใด ๆ กับสองรหัสข้างต้นหรือไม่? ถ้าเป็นเช่นนั้นมีปัญหาอะไรบ้าง?
คำตอบ: รหัส (1) ไม่ถูกต้องและจะสูญเสียความแม่นยำ เมื่อกำหนดไบต์และสั้นพวกเขาจะได้รับค่าของประเภท int สิ่งนี้ทำด้วยตัวเอง หากไม่อยู่ในช่วงของพวกเขาอีกต่อไปจะมีการรายงานข้อผิดพลาด ผลกระทบมีดังนี้:
รหัส (2) ไม่มีข้อผิดพลาดเนื่องจาก: ผู้ประกอบการที่ได้รับมอบหมายขยายแสดงถึงการคัดเลือกนักแสดง
นั่นคือ i += 1; ไม่เทียบเท่ากับ i = i + 1; แต่เทียบเท่ากับ i = (ประเภทข้อมูลของ i) (s + 1);
3. ผู้ประกอบการเชิงสัมพันธ์
หมายเหตุ 1: ผลลัพธ์ของตัวดำเนินการเปรียบเทียบคือบูลีนนั่นคือพวกเขาเป็นจริงหรือเท็จ
หมายเหตุ 2: ตัวดำเนินการเปรียบเทียบ "==" ไม่สามารถเขียนได้อย่างผิดพลาดเป็น "=" ตัวอย่างเช่น:
4. ตัวดำเนินการเชิงตรรกะ
(1) ตัวดำเนินการเชิงตรรกะใช้เพื่อเชื่อมต่อการแสดงออกของบูลีน พวกเขาไม่สามารถเขียนเป็น 3 <x <6 ใน Java แต่ควรเขียนเป็น x> 3 & x <6
(2) ความแตกต่างระหว่าง "&" และ "&&"? ในทำนองเดียวกันคือความแตกต่างระหว่าง "|" และ "||"?
ตอบ: ผลลัพธ์สุดท้ายก็เหมือนกัน ตัวอย่างเช่น: A และ B ต้องเป็นจริงในเวลาเดียวกันและผลลัพธ์ของ A&B และ A & B เป็นจริง B: && มีเอฟเฟกต์ลัดวงจรด้านซ้ายเป็นเท็จและด้านขวาไม่ถูกดำเนินการ || มันมีเอฟเฟกต์ลัดวงจรด้านซ้ายเป็นจริงและด้านขวาไม่ถูกดำเนินการ
หมายเหตุ: ตัวดำเนินการเชิงตรรกะที่ใช้กันทั่วไปในการพัฒนา: &&, || ,!
(3) ความแตกต่างระหว่าง XOR ( ^) และหรือ (|) คือ: เมื่อทั้งซ้ายและขวาเป็นจริงผลลัพธ์ของ XOR เป็นเท็จ
5. บิตโอเปอเรเตอร์:
แม้ว่าจะมีการใช้งานไม่มากนัก แต่จะเห็นได้ในหลาย ๆ รหัสเนื่องจากการคำนวณพื้นฐานของคอมพิวเตอร์คือการดำเนินการบิต
คำถามสัมภาษณ์ 1: ใช้การแลกเปลี่ยนตัวแปรจำนวนเต็มสองตัว
รหัสมีดังนี้:
/* คำถามสัมภาษณ์: โปรดใช้การแลกเปลี่ยนตัวแปรจำนวนเต็มสองตัวด้วยตัวเอง*/คลาส Operatortest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int a = 10; int b = 20; System.out.println ("a:"+a+", b:"+b); // วิธีที่ 1: ใช้ตัวแปรบุคคลที่สาม (ใช้ในการพัฒนา) int c = a; a = b; B = C; System.out.println ("a:"+a+", b:"+b); System.out.println ("----------------"); // วิธีที่ 2: ใช้บิต xor เพื่อใช้งาน (สัมภาษณ์) // ซ้าย: a, b, a // ขวา: a ^ ba = a ^ b; b = a ^ b; // a ^ b ^ b = aa = a ^ b; // a ^ b ^ a = b system.out.println ("a:"+a+", b:"+b); // วิธีที่ 3: ใช้ตัวแปรเพื่อเพิ่ม A = A + B; // a = 30 b = a - b; // b = 10 a = a - b; // a = 20 system.out.println ("a:"+a+", b:"+b); * // วิธีที่ 4: ทำในหนึ่งประโยค b = (a+b) - (a = b); // b = 30-20 = 10, a = 20 system.out.println ("a:"+a+", b:"+b); -คำถามสัมภาษณ์ 2: โปรดเขียนผลลัพธ์ของการคำนวณ 2 ครั้ง 8 ในวิธีที่มีประสิทธิภาพมากที่สุด
คำตอบ: 2 * 8 เทียบเท่ากับ 2 << 3
การทบทวนความรู้:
<<: ทิ้งบิตสูงสุดทางด้านซ้ายและด้านขวา >>: บิตสูงสุดทางด้านขวาคือ 0 และด้านซ้ายคือ 0; สูงสุดคือ 1 และด้านซ้ายคือ 1 >>>: กะขวาที่ไม่ได้ลงชื่อไม่ว่าบิตสูงสุดคือ 0 หรือ 1 ด้านซ้ายคือ 0 และด้านซ้ายคือ 0
6. ตัวดำเนินการสามจุด:
รูปแบบ: (นิพจน์เชิงสัมพันธ์)? นิพจน์ 1: นิพจน์ 2;
หากเงื่อนไขเป็นจริงผลลัพธ์หลังจากการดำเนินการคือนิพจน์ 1;
หากเงื่อนไขเป็นเท็จผลลัพธ์หลังจากการดำเนินการคือนิพจน์ 2;
ตัวอย่าง:
รับตัวเลขสองตัวจำนวนมาก:
รหัสคัดลอกรหัสมีดังนี้: int x = 3, y = 4, z; z = (x> y)? x: y; // z ตัวแปรเก็บตัวเลขสองตัวจำนวนมาก
รับค่าสูงสุดของจำนวนเต็มสามตัว:
// วิธีที่ 1: ในสองขั้นตอน // a: เปรียบเทียบค่าสูงสุดของ a และ b แรก // b: เปรียบเทียบค่าสูงสุดของ a และ b กับ c int temp = ((a> b)? a: b); //system.out.println(temp); int max1 = (temp> c? temp: c); System.out.println ("Max1:"+Max1); // วิธีที่ 2: รับ int max2 ในหนึ่งขั้นตอน = (a> b)? ((a> c)? a: c): ((b> c)? b: c); // ไม่แนะนำวิธีนี้: // int max2 = a> b? a> c? A: C: B> C? B: C; //system.out.println("max2:"+max2);ขอแนะนำให้ใช้วิธีหนึ่ง นอกจากนี้ในโหมด 2, บรรทัด 10 และบรรทัด 12 เหมือนกันและมีการใช้ซ้อนกันของผู้ประกอบการตรีโกณมิติ
เปรียบเทียบว่าสองจำนวนเต็มเท่ากัน:
// เปรียบเทียบว่าจำนวนเต็มสองตัวนั้นเท่ากัน int m = 100; int n = 200; // boolean flag = (m == n)? จริง: เท็จ; ธงบูลีน = (m == n); System.out.println (Flag);
2. การป้อนข้อมูลคีย์บอร์ด
เมื่อเรากำลังเขียนโปรแกรมค่าข้อมูลจะได้รับการแก้ไข แต่ในการพัฒนาจริงค่าข้อมูลจะต้องเปลี่ยนแปลงดังนั้นฉันจึงวางแผนที่จะปรับปรุงข้อมูลลงในอินพุตแป้นพิมพ์เพื่อปรับปรุงความยืดหยุ่นของโปรแกรม
จะใช้การป้อนข้อมูลคีย์บอร์ดได้อย่างไร? (อย่าลืมใช้ตอนนี้)
(1) แพ็คเกจการส่งสัญญาณ (ตำแหน่งด้านบนของนิยามคลาส): นำเข้า java.util.scanner;
(2) สร้างวัตถุรายการคีย์บอร์ด: สแกนเนอร์ SC = เครื่องสแกนใหม่ (System.in);
(3) รับข้อมูลผ่านวัตถุ: int x = sc.nextint ();
รหัสตัวอย่าง:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น