基于my reference,基元类型具有默认值,而对象为空。我测试了一段代码。
public class Main {
public static void main(String[] args) {
int a;
System.out.println(a);
}
}
行System.out.println(a);
将是一个错误,指向变量a
,表示为variable a might not have been initialized
,而在给定的引用中,integer
将0
作为默认值。但是,使用下面的给定代码,它实际上将打印0
。
public class Main {
static int a;
public static void main(String[] args) {
System.out.println(a);
}
}
第一个代码可能会出什么问题?类变量的行为是否与局部变量不同?
发布于 2013-10-02 14:48:14
在第一个代码示例中,a
是一个main
方法局部变量。方法局部变量需要在使用前进行初始化。
在第二个代码示例中,a
是类成员变量,因此它将被初始化为默认值。
发布于 2013-10-02 14:47:58
可以,实例变量将被初始化为默认值。对于局部变量,您需要在使用前进行初始化:
public class Main {
int instaceVariable; // An instance variable will be initialized to the default value
public static void main(String[] args) {
int localVariable = 0; // A local variable needs to be initialized before use
}
}
发布于 2017-07-05 13:41:37
局部变量不会获得默认值。如果不通过某种方式赋值,它们的初始值是未定义的。在使用局部变量之前,必须先对其进行初始化。
当你在类级别(作为成员,即字段)和方法级别声明变量时,会有很大的不同。
如果您在类级别声明一个字段,它们将根据其类型获取默认值。如果你在方法级别声明一个变量或声明为一个块(意味着{}中的任何代码),不要获取任何值,并且保持未定义,直到它们以某种方式获得一些起始值,即分配给它们的一些值。
https://stackoverflow.com/questions/19131336
复制相似问题