繁体   English   中英

为什么以及如何在不由Java构造函数初始化的情况下初始化实例变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM