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
据我了解:
my_class
是 class 的名称
my_object
是我正在创建的对象的引用
new
运算符分配内存,returns 它的地址存储在 my_object
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
字段进行一次初始化,可以在构造函数(即每个构造函数一次)中,也可以在其声明中初始化。
(值得注意的是,如果您希望构造函数的参数在最终变量的值中发挥作用,您必须在构造函数中对其进行初始化——否则最终变量将毫无用处!)
我正在 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
据我了解:
my_class
是 class 的名称
my_object
是我正在创建的对象的引用new
运算符分配内存,returns 它的地址存储在my_object
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
字段进行一次初始化,可以在构造函数(即每个构造函数一次)中,也可以在其声明中初始化。
(值得注意的是,如果您希望构造函数的参数在最终变量的值中发挥作用,您必须在构造函数中对其进行初始化——否则最终变量将毫无用处!)