在Java中,如果我们声明原始变量(非本地),如int,float等,并且不初始化它们,那么它们会被默认值初始化。我们能为参考变量实现这样的东西吗?例如,如果我有一个包含两个int变量的employee类,而在另一个类中,如果我只创建了employee类的引用,那么int变量是否可以初始化为零?
答案 0 :(得分:2)
在Java中,如果我们声明原始变量(非本地),如int,float等,并且不初始化它们,那么它们会被默认值初始化。
不,他们不是。 字段执行,包括实例字段和类字段,但不包括变量。
我们能为参考变量实现这样的目标吗?
参考字段获得相同的行为。他们初始化的值为null
。
例如,如果我有一个包含两个int变量的employee类,而在另一个类中,如果我只创建了employee类的引用,那么int变量是否可以初始化为零?
如果通过"创建参考"你的意思是你已经创建了一个Employee
实例,那么该实例中的任何字段都将被初始化为默认值,除非Employee
构造函数给它们一个不同的值。
答案 1 :(得分:0)
未显式初始化时,不会将本地字段初始化为默认值。所以,像这样
public class Main {
boolean flag;
void foo(){
System.out.println(flag);
}
}
编译并foo()
方法将打印false
,而类似
public class Main2 {
void foo(){
boolean flag;
System.out.println(flag);
}
}
甚至不会编译。此外,参考的默认值为null
。
你可以做的是以这样的方式设计你的类,当初始化类时,一个值被分配给它的实例变量,比如
public class Main {
boolean flag;
{
flag=true;
}
void foo(){
System.out.println(flag);
}
}
答案 2 :(得分:0)
字段初始化为null
,如果它们来自某些“类型”(基本类型除外),无论如何,如果您在该类的“默认”构造函数中提供默认值,尤其是您可以覆盖默认值{ {1}}这些值。
null