ก่อนอื่น เรามาพูดถึงความแตกต่างระหว่างตอนจบ ในที่สุด และตอนจบ
สุดท้าย? ตัวแก้ไข (คีย์เวิร์ด) หากคลาสถูกประกาศเป็นคลาสสุดท้าย หมายความว่าคลาสนั้นไม่สามารถสืบทอดคลาสย่อยใหม่ได้อีกต่อไป และไม่สามารถสืบทอดเป็นคลาสพาเรนต์ได้ ดังนั้นจึงไม่สามารถประกาศคลาสทั้งนามธรรมและขั้นสุดท้ายได้ ประกาศตัวแปรหรือวิธีการเป็นขั้นสุดท้ายเพื่อให้แน่ใจว่าจะไม่มีการเปลี่ยนแปลงระหว่างการใช้งาน ตัวแปรที่ประกาศเป็นขั้นสุดท้ายจะต้องได้รับค่าเริ่มต้นเมื่อประกาศ และสามารถอ่านได้เฉพาะในการอ้างอิงที่ตามมาเท่านั้น และไม่สามารถแก้ไขได้ วิธีการประกาศเป็นขั้นสุดท้ายสามารถใช้ได้เท่านั้นและไม่สามารถโอเวอร์โหลดได้
ในที่สุด จัดเตรียมบล็อกสุดท้ายเพื่อดำเนินการล้างข้อมูลใด ๆ ในระหว่างการจัดการข้อยกเว้น หากมีข้อยกเว้นเกิดขึ้น ส่วนคำสั่ง catch ที่ตรงกันจะถูกดำเนินการและการควบคุมจะส่งผ่านไปยังบล็อกสุดท้าย (ถ้ามี)
สรุปชื่อวิธีการ เทคโนโลยี Java อนุญาตให้ใช้เมธอด Finalize() เพื่อทำการล้างข้อมูลที่จำเป็น ก่อนที่ตัวรวบรวมขยะจะล้างอ็อบเจ็กต์ออกจากหน่วยความจำ วิธีการนี้ถูกเรียกโดยตัวรวบรวมขยะบนวัตถุนี้เมื่อกำหนดว่าไม่มีการอ้างอิงวัตถุ มันถูกกำหนดไว้ในคลาส Object ดังนั้นคลาสทั้งหมดจึงสืบทอดมัน คลาสย่อยแทนที่เมธอด Finalize() เพื่อจัดระเบียบทรัพยากรระบบหรือดำเนินการล้างข้อมูลอื่นๆ เมธอด Finalize() ถูกเรียกบนอ็อบเจ็กต์ก่อนที่ตัวรวบรวมขยะจะลบมัน
ประการที่สอง ความแตกต่างระหว่าง HashMap และ Hashtable
เป็นคลาสทั้งหมดที่อยู่ในอินเทอร์เฟซ Map และใช้คีย์เฉพาะในการแมปกับค่าเฉพาะ
คลาส HashMap ไม่เรียงลำดับหรือเรียงลำดับ อนุญาตให้ใช้คีย์ Null และค่า Null หลายค่า
Hashtable คล้ายกับ HashMap แต่ไม่อนุญาตให้ใช้คีย์ Null และค่า Null นอกจากนี้ยังช้ากว่า HashMap เนื่องจากเป็นแบบซิงโครนัส
ประการที่สาม String s = new String("xyz"); มีการสร้าง String Objects กี่รายการ?
มีวัตถุสองชิ้น ชิ้นหนึ่งคือ "xyx" และอีกชิ้นเป็นวัตถุอ้างอิงที่ชี้ไปที่ "xyx"
ประการที่สี่ อะไรคือความแตกต่างระหว่าง sleep() และ wait() ที่ชื่นชอบของ Threading
เมธอด sleep() เป็นเมธอดที่หยุดเธรดเป็นระยะเวลาหนึ่ง หลังจากช่วงเวลาพักเครื่องหมดลง เธรดไม่จำเป็นต้องดำเนินการต่อทันที เนื่องจากในขณะนั้น เธรดอื่นอาจกำลังทำงานอยู่และไม่ได้ถูกกำหนดให้ยกเลิกการดำเนินการ เว้นแต่ (a) เธรด "การปลุก" มีลำดับความสำคัญสูงกว่า
(b) เธรดที่กำลังรันอยู่ถูกบล็อกด้วยเหตุผลอื่น
เมื่อใช้ wait() สำหรับการโต้ตอบของเธรด หากเธรดส่งการเรียก wait() ไปยังอ็อบเจ็กต์การซิงโครไนซ์ x เธรดจะหยุดการดำเนินการชั่วคราว และอ็อบเจ็กต์ที่ถูกเรียกจะเข้าสู่สถานะรอจนกว่าจะถูกปลุกให้ตื่นหรือเวลารอหมดอายุ
ประการที่ห้า เกิดอะไรขึ้นกับ short s1 = 1; s1 = s1 + 1;?
short s1 = 1; s1 = s1 + 1; ผิด s1 เป็นประเภทสั้น s1+1 เป็นประเภท int และไม่สามารถแปลงเป็นประเภทสั้นได้อย่างชัดเจน สามารถแก้ไขได้เป็น s1 =(short)(s1 + 1) สั้น s1 = 1; s1 += 1 ถูกต้อง
ประการที่หก ความแตกต่างระหว่างโอเวอร์โหลดและโอเวอร์ไรด์ วิธีการ Overloaded สามารถเปลี่ยนประเภทของค่าส่งคืนได้หรือไม่
การแทนที่เมธอดและการโอเวอร์โหลดเป็นการแสดงออกที่แตกต่างกันของ Java polymorphism การเอาชนะคือการรวมตัวกันของความหลากหลายระหว่างคลาสพาเรนต์และคลาสย่อย และการโอเวอร์โหลดเป็นการรวมตัวกันของความหลากหลายในคลาส ถ้าเมธอดที่กำหนดในคลาสย่อยมีชื่อและพารามิเตอร์เหมือนกับคลาสพาเรนต์ เราจะบอกว่าเมธอดนั้นถูกแทนที่ เมื่ออ็อบเจ็กต์ของคลาสย่อยใช้เมธอดนี้ มันจะเรียกคำจำกัดความในคลาสย่อย ด้วยเหตุนี้ คำจำกัดความในคลาสพาเรนต์จึงดูเหมือนว่าจะถูก "ป้องกัน" หากมีการกำหนดวิธีการที่มีชื่อเดียวกันหลายวิธีในคลาส และมีจำนวนพารามิเตอร์หรือประเภทพารามิเตอร์ต่างกัน จะเรียกว่าวิธีการโอเวอร์โหลด วิธีการโอเวอร์โหลดสามารถเปลี่ยนประเภทของค่าส่งคืนได้
ประการที่เจ็ด องค์ประกอบต่างๆ ในชุดไม่สามารถทำซ้ำได้ ดังนั้น วิธีใดที่ใช้ในการแยกแยะว่าองค์ประกอบเหล่านั้นซ้ำกันหรือไม่ คุณควรใช้ == หรือเท่ากับ()?
องค์ประกอบในชุดไม่สามารถทำซ้ำได้ ดังนั้นให้ใช้เมธอด iterator() เพื่อแยกแยะว่าองค์ประกอบเหล่านั้นซ้ำหรือไม่ เท่ากับ() กำหนดว่าสองชุดเท่ากันหรือไม่
วิธีการเท่ากับ () และ == กำหนดว่าค่าอ้างอิงชี้ไปที่วัตถุเดียวกันหรือไม่ เท่ากับ () ถูกแทนที่ในชั้นเรียนที่จะคืนค่าเป็นจริงเมื่อเนื้อหาและประเภทของวัตถุสองชิ้นที่แยกจากกันตรงกัน
แปด อะไรคือความแตกต่างระหว่างข้อผิดพลาดและข้อยกเว้น?
ข้อผิดพลาดแสดงถึงปัญหาร้ายแรงในสถานการณ์ที่การกู้คืนไม่ได้เป็นไปไม่ได้แต่เป็นเรื่องยาก เช่น หน่วยความจำล้น เป็นไปไม่ได้ที่จะคาดหวังให้โปรแกรมจัดการกับสถานการณ์ดังกล่าว
ข้อยกเว้นแสดงถึงปัญหาการออกแบบหรือการใช้งาน นั่นคือแสดงถึงสถานการณ์ที่จะไม่เกิดขึ้นหากโปรแกรมทำงานตามปกติ
ประการที่เก้า ให้ข้อยกเว้นรันไทม์ที่คุณเห็นบ่อยที่สุดแก่ฉัน
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
ประการที่ 10 องค์ประกอบต่างๆ ในชุดไม่สามารถทำซ้ำได้ เหตุใดจึงใช้วิธีใดในการแยกแยะว่าซ้ำหรือไม่ คุณควรใช้ == หรือเท่ากับ()
องค์ประกอบในชุดไม่สามารถทำซ้ำได้ ดังนั้นให้ใช้เมธอด iterator() เพื่อแยกแยะว่าองค์ประกอบเหล่านั้นซ้ำหรือไม่ เท่ากับ() กำหนดว่าสองชุดเท่ากันหรือไม่
วิธีการเท่ากับ () และ == กำหนดว่าค่าอ้างอิงชี้ไปที่วัตถุเดียวกันหรือไม่ เท่ากับ () ถูกแทนที่ในชั้นเรียนที่จะคืนค่าเป็นจริงเมื่อเนื้อหาและประเภทของวัตถุสองชิ้นที่แยกจากกันตรงกัน