การวิจัยในบทความนี้ส่วนใหญ่เกี่ยวข้องกับตัวอย่างที่เกี่ยวข้องของ "ประเภท" null ใน Java ตามรายละเอียดด้านล่าง
ก่อนอื่นให้คำถามที่เกี่ยวข้องกับโมฆะอย่างง่ายซึ่งจะกระตุ้นการอภิปรายของเราเกี่ยวกับ Null ต่อมาเราจะตีความ "ประเภท" null ตามคู่มือภาษาทางการ
คำถาม: โปรแกรมต่อไปนี้สามารถทำงานได้อย่างถูกต้องหรือไม่?
การวิเคราะห์:
เอาต์พุตควร: ฮ่าฮ่า
เนื่องจาก NULL สามารถถูกบังคับให้ใช้คลาสประเภทใดก็ได้ (NULL) ก่อนหน้า (NULL) นั้นถูกกฎหมาย แต่หลังจากที่ NULL ถูกบังคับให้หมุนมันเป็นวัตถุที่ไม่ถูกต้องและค่าคืนค่าของมันคือ NULL (ฉันจะอธิบายในภายหลัง)
วิธีฮ่าฮ่าเป็นวิธีการคงที่ วิธีการคงที่ใช้การเชื่อมแบบคงที่และจะไม่โยนข้อยกเว้นตัวชี้ว่าง
หากฟังก์ชั่น HAHA () ถูกเปิดไม่คงที่จะมีการโยนข้อยกเว้นตัวชี้โมฆะ
มาลองอีกตัวอย่างหนึ่ง:
คำถามนี้คล้ายกับข้างต้น
ผลที่ได้คือการส่งออก "ฮ่าฮ่า"
เราสามารถเห็นได้ในข้อกำหนดภาษา Java
ในส่วน 4.1 ชนิดของประเภทและค่าที่กล่าวถึง:
มีสองประเภทในภาษาการเขียนโปรแกรม Java: ประเภทดั้งเดิม (§4.2) และประเภทอ้างอิง (§4.3) -
พิมพ์:
primitiveType
การอ้างอิง
นอกจากนี้ยังมีประเภทโมฆะพิเศษประเภทของนิพจน์ null (§3.10.7, §15.8.1) ซึ่งไม่มีชื่อ
เนื่องจากประเภท null ไม่มีชื่อจึงเป็นไปไม่ได้ที่จะประกาศตัวแปรของประเภท null หรือส่งไปยังประเภท null
การอ้างอิง null เป็นค่าที่เป็นไปได้เพียงอย่างเดียวของการแสดงออกของประเภท null
การอ้างอิง null สามารถผ่านการแปลงอ้างอิงที่กว้างขึ้นเป็นประเภทอ้างอิงใด ๆ
ในทางปฏิบัติโปรแกรมเมอร์สามารถเพิกเฉยต่อประเภท NULL และแกล้งทำเป็นว่า NULL เป็นเพียงตัวอักษรพิเศษที่สามารถอ้างอิงได้ทุกประเภท
ฉันจะแปลมันสำหรับ:
มีสองประเภทในภาษา Java หนึ่งคือ ประเภทพื้นฐาน และอีกประเภทหนึ่งคือ ประเภทอ้างอิง
นอกจากนี้ยังมีประเภทโมฆะพิเศษนั่นคือประเภทของนิพจน์ null ซึ่งไม่มีชื่อ
เนื่องจากประเภท null ไม่มีชื่อจึงเป็นไปไม่ได้ที่จะประกาศตัวแปรของประเภท null หรือแปลงเป็นประเภท null
การอ้างอิง null เป็นค่าที่เป็นไปได้เพียงอย่างเดียวของนิพจน์ประเภท null
การอ้างอิง NULL สามารถแปลงเป็นประเภทอ้างอิงใด ๆ
ในความเป็นจริงโปรแกรมเมอร์สามารถเพิกเฉยต่อประเภท NULL และสามารถคิดได้ว่า NULL เป็นเพียงสัญลักษณ์พิเศษที่สามารถกลายเป็นประเภทอ้างอิงใด ๆ
หลังจากอ่านข้อความนี้ฉันก็รู้ทันที
ใน 5.2 ส่วนการแปลงที่ได้รับมอบหมาย:
“ ค่าของประเภท null (การอ้างอิง null เป็นค่าเดียวเท่านั้น) อาจถูกกำหนดให้กับประเภทการอ้างอิงใด ๆ ส่งผลให้มีการอ้างอิงโมฆะของประเภทนั้น”
ค่าของการอ้างอิงประเภท NULL (NULL (NULL) เป็นค่าเดียวของประเภทนี้) สามารถกำหนดให้กับประเภทใดก็ได้และจะส่งคืนการอ้างอิงที่ว่างเปล่าไปยังวัตถุประเภทนั้น (จริง ๆ แล้วเป็นค่า NULL)
ใน 5.3. ส่วนการแปลงวิธีการเรียกมี:
“ ค่าของประเภท null (การอ้างอิง null เป็นค่าเดียวเท่านั้น) อาจถูกแปลงเป็นประเภทอ้างอิงใด ๆ ”
เช่น " null สามารถแปลงเป็นประเภทอ้างอิงใด ๆ "
ผ่านคู่มือภาษาทางการฉันมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับประเภทว่าง
มันเป็นความช่วยเหลือบางอย่างในการเขียนโปรแกรมและการสัมภาษณ์งานในอนาคต
ในที่สุดฉันหวังว่าทุกคนจะพบปัญหาแปลก ๆ นอกจาก Baidu แล้วพยายามค้นหาบนเว็บไซต์สแต็กล้นให้มากที่สุดและตรวจสอบคู่มืออย่างเป็นทางการ
สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับความเข้าใจเชิงลึกของบทความนี้เกี่ยวกับ "ประเภท" ที่เป็นโมฆะใน Java และฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!