use*_*844 17 java variables exception nullpointerexception default-value
我是Java新手.我刚刚读到Java中的类变量有默认值.
我尝试了以下程序,并期望获得输出0,这是一个整数的默认值,但我得到了NullPointerException.
我错过了什么?
class Test{
static Integer iVar;
public static void main(String...args) {
System.out.println(iVar.intValue());
}
}
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 28
你是对的,Java中未初始化的类变量具有分配给它们的默认值.IntegerJava中的类型不一样int.Integer是包装类,它将基本类型的值包装int在对象中.
在您的情况下,iVar是对Integer尚未初始化的对象的引用.未初始化的引用获取默认值,null当您尝试intValue在空引用上应用()方法时,您将获得NullPointerException.
要完全避免这个问题,您需要使引用变量引用一个Integer对象:
class Test {
// now iVar1 refers to an integer object which wraps int 0.
static Integer iVar1 = new Integer(0);
// uninitialized int variable iVar2 gets the default value of 0.
static int iVar2;
public static void main(String...args) {
System.out.println(iVar1.intValue()); // prints 0.
System.out.println(iVar2); // prints 0.
}
}
Run Code Online (Sandbox Code Playgroud)