实例变量初始化的位置

sar*_*nan 3 java

public class Ex
{
  int a;
  public Ex()
  {
      System.out.println("a is "+a);
   }
}
Run Code Online (Sandbox Code Playgroud)

输出为:a为0

初始化的地方......

我知道int的默认值是零.我的问题是它在哪里被初始化...通过默认构造函数?(我听说默认构造函数是在我们没有提到类中的任何构造函数时创建的)

dar*_*ioo 6

如果你没有把a自己初始化(它是一个原始值),它会自动初始化为它的默认值,在这种情况下为0.

阅读4.5.5节.(本文档中的变量的初始值).


Jig*_*shi 5

其默认值为0.

来自The Java™Tutorials - 原始数据类型 - 默认值:

声明字段时并不总是需要分配值.声明但未初始化的字段将由编译器设置为合理的默认值.

?????????????????????????????????????????????????????????
?        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                      ?
?????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)