由于很久没用到这个知识点,差点忘了,今天遇到,写个记录
现在我有一个课程类(Course)
public class Course {
private int cid; // 课程号
public Course() {} // 空构造
public int getCid() { // 获取id
return cid;
}
}
我新建一个课程类,打印 id,结果是0
Course c = new Course();
System.out.println(c.getCid()); // 打印结果是0
为什么这里的cid是0?
因为Course类中的cid是int类型,而int类型的默认值是0,如果Course类中的cid为空,就会被替换成0
但我这样写,则会报错 ` 变量 'i' 可能尚未初始化 `
int i;
System.out.println(i);
为什么这里的 i 是报错?
因为 i 是局部变量,没有初始化,所以不能使用
如果不是局部变量呢
我在外面定义一个 x 和 y ,然后在main函数中打印,结果都为0
public class Test {
static int x;
int y;
public static void main(String[] args) {
System.out.println(x); // 结果为0
Test test = new Test();
System.out.println(test.y); // 结果为0
}
}
说明非局部变量有初始值(局部变量没有初始值,所以必须初始化才能用)
不同类型初始值是多少可以参考这篇文章:Java未赋值变量的初始值(默认值)_花木雨的博客-CSDN博客
参考:官方文档
当创建一个Java对象时,类中的成员变量会自动初始化为默认值,如int类型的cid为0。局部变量则需要显式初始化,未初始化使用会报错。静态变量(如x)和实例变量(如y)在没有明确赋值的情况下也会有默认值,它们在内存中分配空间并赋予默认值。
6823

被折叠的 条评论
为什么被折叠?



