सिद्धांत रूप में यह एक जेवीएम रहस्य है, व्यावहारिक रूप से यह 32-बिन वीएम पर 0 (0x00000000) है। यदि आप ओरेकल जेवीएम का उपयोग करते हैं तो आप sun.misc.Unsafe का उपयोग कर सकते हैं, जो किसी भी पते पर मेमोरी सामग्री को सत्यापित करने के लिए पढ़ सकता है।
public class Test {
int i1 = 100;
String s = null;
int i2 = 200;
public static void main(String[] args) throws Exception {
Test test = new Test();
System.out.println(getInt(test, "i1"));
System.out.println(getInt(test, "s"));
System.out.println(getInt(test, "i2"));
}
static int getInt(Test test, String name) throws Exception {
Unsafe u = getUnsafe();
long offset = u.objectFieldOffset(Test.class.getDeclaredField(name));
return u.getInt(test, offset);
}
static Unsafe getUnsafe() throws Exception {
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
return (Unsafe) f.get(null);
}
}
उत्पादन
100
0
200
स्रोत
2013-01-10 12:47:28
सवाल आप के लिए भेजा कुछ भ्रामक है - स्वीकार किए जाते हैं जवाब सब के बारे में 'Nullable', रिक्त नहीं * संदर्भ * है। –
इस प्रश्न के स्वीकृत उत्तर की जांच करें। आपको यह समझने में मदद मिलेगी कि wt java में शून्य है। Http://stackoverflow.com/questions/2707322/what-is-null-in-java –