18
A
回答
31
它取決於您聲明變量的範圍。例如,局部變量沒有default values
在這種情況下,你將不得不分配空手動,其中在實例變量的情況下分配null是多餘的,因爲實例變量得到的默認值。
public class Test {
Object propertyObj1;
Object propertyObj2 = null; // assigning null is redundant here as instance vars get default values
public void method() {
Object localVariableObj1;
Object localVariableObj1.getClass(); // illegal, a compiler error comes up as local vars don't get default values
Object localVariableObj2 = null;
Object localVariableObj2.getClass(); // no compiler error as localVariableObj2 has been set to null
propertyObj1.getClass(); // no compiler error
propertyObj2.getClass(); // no compiler error
}
}
1
如所提到的,對象引用作爲instance variable
不需要被分配null
那些採取null
作爲默認值。但是局部變量必須被初始化,否則你會得到編譯錯誤,說The local variable s may not have been initialized
。
欲瞭解更多詳情,請參閱this link
相關問題
- 1. 什麼是聲明區
- 2. 聲明中的區別Java
- 3. javascript中兩個聲明的區別是什麼?
- 4. 是什麼)System.Drawing.Image.FromFile(),只是Image.FromFile(區別
- 5. 什麼是Java中聲明預選賽
- 6. 守衛聲明和if ... else聲明之間的基本區別是什麼?
- 7. 這兩個FactoryGirl聲明的實際區別是什麼
- 8. 聲明「MyStuct a();」之間的區別是什麼?和「MyStruct a」?
- 9. 什麼是聲明
- 10. 什麼是聲明
- 11. Apache SetEnv prepends REDIRECT_。是什麼賦予了?
- 12. 什麼是'不是聲明'?
- 13. 這兩個聲明在反應JavaScript之間有什麼區別?
- 14. 這兩個聲明有什麼區別?
- 15. 這兩個聲明有什麼區別?
- 16. 這兩個聲明有什麼區別?
- 17. List聲明有什麼區別?
- 18. 這些#import聲明有什麼區別?
- 19. 這兩個聲明有什麼區別?
- 20. 這兩個聲明有什麼區別?
- 21. 這兩個聲明有什麼區別?
- 22. 在javascript中,鍵值對的賦值是否是一個聲明?
- 23. 這兩種在java中聲明對象的方式有什麼區別?
- 24. 是什麼區別:
- 25. 聲明Stream與try-with-resources聲明之間有什麼區別?
- 26. Array聲明和Collection聲明之間有什麼區別
- 27. 每個聲明和每個聲明有什麼區別?
- 28. 有什麼區別多個空變量聲明
- 29. 爲什麼只有java.lang。對象在java中被賦予超類嗎?
- 30. javascript的3個對象聲明有什麼區別