java对象初始化的顺序

Java代码  

  1. public class Son extends Father {  

  2.   

  3.     String value = null;//2  

  4.   

  5.     public Son() {  

  6.         super();  //1  

  7.         System.out.println("Son:  " + value);//3  

  8.     }  

  9.   

  10.     public static void main(final String[] args) {  

  11.         new Son();  

  12.     }  

  13. }  

  14.   

  15.   

  16. class Father {  

  17.   

  18.     public Father() {  

  19.         if (this instanceof Son) {  

  20.             Son lower = (Son) this;  

  21.             lower.value = "test";  

  22.         }  

  23.     }  

  24. }  

  25.   

  26.   

  27. class Father {  

  28.   

  29.     public Father() {  

  30.         if (this instanceof Son) {  

  31.             Son lower = (Son) this;  

  32.             lower.value = "test";  

  33.         }  

  34.     }  

  35. }  


下载

这个的结果是 null 
步骤1  设置为test 
步骤2  设置为null 
步骤3 打印出来null 

如果 不是   String value = null ; 只是   String value; 下载

步骤1  设置为test 
步骤2  不做任何事情,因为已经有值了,不用设置为默认的null值了 
步骤3 打印出来null
 

所以  一个字段不设置值 和 设置为null  是有区别的。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章