[英]why and how instance variable get initialized without getting initialized by constructor in Java?
public class Test{
int i;
Test(){
System.out.println(i);
}
public static void main(String[] args){
Test obj=new Test();
}
}
输出= 0
PS :我对Java很幼稚,所以这个问题可能很愚蠢。 希望得到您的支持。 谢谢
编译器会将未初始化的静态/实例字段设置为默认值。
下表显示了数据类型的默认值:
+--------------------------+----------------------------+
| Data Type | Default Value (for fields) |
+--------------------------+----------------------------+
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| float | 0.0f |
| double | 0.0d |
| char | '\u0000' |
| String (or any object) | null |
| boolean | false |
+--------------------------+----------------------------+
有关更多信息,您可以在此处查看文档
请参阅,由其默认值初始化的每个Instance-Variable or Class-Variable
如果instance-variable是某些Reference类型,则将始终使用
null
为其分配默认值
因此,在这种情况下, int
是原始类型,其default
值为0(zero)
,这就是输出为0
的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.