用Java初始化对象



我正在学习Java中的一些基本OOP概念。考虑以下代码片段:

class my_class{
int a;
public my_class() {
System.out.print(a+" ");
a = 10;
System.out.print(a);
}
}
class Main{
public static void main(String[] args) {
my_class my_object = new my_class();
}
}

以下代码的输出为:0 10

根据我的理解:

  1. my_class是类的名称
  2. my_object是我正在创建的对象的引用
  3. new运算符分配内存并返回存储在my_object中的地址
  4. my_class()是构造函数,它用默认值0初始化对象的字段,然后将其赋值为10

现在考虑代码:

class my_class{
final int a;
public my_class() {
a=10;
System.out.print(a);
}
}
class Main{
public static void main(String[] args) {
my_class my_object = new my_class();
}
}

根据我之前的理解,它应该创建my_object,字段final int a设置为默认值0,该值应该是不可更改的,并在a=10;处标记错误,但它可以工作并打印输出:10

我哪里错了?

您可以初始化任何final字段一次,在构造函数中(即每个构造函数一次(或在其声明中。

(值得注意的是,如果你想让构造函数的参数在最终变量的值中发挥作用,你必须在构造函数中初始化它——否则最终变量就没用了!(

最新更新