我是java的新手,我对对象初始化有疑问.
我目前所知道的:
构造函数用于初始化实例变量,如果我们没有显式地对构造函数进行编码,则提供默认构造函数,该构造函数自动为实例变量提供默认值,如0等int.
我的问题: 以下代码是如何工作的(我没有初始化实例变量)?
我尝试了如下基本代码:
public class hello{
int i; //Instance variable
public hello()
{
//Constructor is empty!!!
}
public static void main(String args[])
{
System.out.println(new hello().i);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是0,但是怎么样?我没有在构造函数中做任何事情,因为我明确地编码了构造函数,不应该调用默认构造函数(我知道我的脑子里有一个错误的概念,所以请纠正我).
上面的代码是如何工作的,请清除我的疑问.谢谢!
默认构造函数不初始化任何内容.它是空的.现场级变量自动初始化为某些默认值(比如0用于int无论构造函数的类型).
其他默认值是
boolean -> false
double -> 0.0D
[any object reference incl. String] -> null
Run Code Online (Sandbox Code Playgroud)
您可能会混淆实例变量和局部变量.局部变量是必须在使用前初始化的变量,否则会出现编译错误.int i在这种情况下是一个实例变量,可以保持未初始化而不会导致编译器抱怨.int实例变量默认为0.