java对象初始化的顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  是有区别的。 


以上是关于java对象初始化的顺序的主要内容,如果未能解决你的问题,请参考以下文章

Java初始化顺序

java类的初始化块/执行顺序,实例化对象数据赋值

java中类与对象的加载顺序

java中关于对象初始化的问题

Java对象初始化顺序

java中对象的初始化顺序