繁体   English   中英

Java中对象的初始化

[英]Initialization of object in 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;处标记错误a=10; 但它可以工作并打印输出: 10

我哪里错了?

您可以初始化任何final一次场,无论是在构造函数(即,每个构造一次),或在其声明。

(值得注意的是,如果您希望构造函数的参数在最终变量的值中起作用,则必须在构造函数中对其进行初始化——否则最终变量将毫无用处!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM