นั่นเป็นเพราะสถานะของตัวแปรท้องถิ่นถูกควบคุมภายในขอบเขตของมัน
// method/loop/if/try-catch etc...
{
Date d; // if it's not intialised in this scope then its not intialised anywhere
}
ซึ่งไม่ใช่กรณีสำหรับฟิลด์
class Foo{
Date d; // it could be intialised anywhere, so its out of control and java will set to null for you
}
ทีนี้ทำไมมันถึงดีกว่าที่จะตั้งค่าตัวแปรให้เป็นโมฆะและใช้มันทันที? อาจเป็นความผิดพลาดทางประวัติศาสตร์ที่บางครั้งนำไปสู่ข้อผิดพลาดที่น่ากลัว
{
Date d = null;
try{
}catch{ // hide it here
}
return d;
}
ตอนนี้ความแตกต่างทางความหมายคืออะไร?
Date d;
เพียงแค่ประกาศตัวแปรที่สามารถเก็บการอ้างอิงที่ชี้ไปยังวัตถุประเภทDateอย่างไรก็ตาม
Date d= null;
ทำเหมือนกันทุกประการ แต่การอ้างอิงชี้ไปที่ null ในครั้งนี้ null เป็นเหมือนการอ้างอิงใด ๆ มันใช้พื้นที่ของตัวชี้เนทีฟนั่นคือ 4 ไบต์บนเครื่อง 32- บิตและ 8 ไบต์บนเครื่อง 64- บิต