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  是有区别的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值