在我看来,int变量的默认值是0.但是,在我的演示中,变量num3
没有初始值。
class Solution
{
static int num1;
int num2;
public static void main(String[] args){
int num3;
int[] nums = new int[5];
System.out.println("num1: " + num1);
Solution sol = new Solution();
System.out.println("num2: " + sol.num2);
System.out.println("num3: " + num3);
System.out.print("nums:");
for(int item : nums)
System.out.print(" " + item);
System.out.println("");
}
}
我在Ubuntu16.04上运行了我的演示。我得到的错误如下:
Solution.java:12: error: variable num3 might not have been initialized
System.out.println(num3);
^
1 error
如果我删除此行System.out.println("num3: " + num3);
,我的结果如下:
num1: 0
num2: 0
nums: 0 0 0 0 0
如果有人知道原因,请告诉我。感谢。
答案 0 :(得分:0)
来自https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html(我的重点):
默认值
声明字段时并不总是需要指定值。 声明但未初始化的字段将设置为a 编译器合理默认。一般来说,这是默认的 将为零或null,具体取决于数据类型。依靠这样的 但是,默认值通常被认为是错误的编程 风格。
...
局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果无法初始化声明它的局部变量,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。