gpt4 book ai didi

java - 最终变量值

转载 作者:行者123 更新时间:2023-12-02 12:02:40 26 4
gpt4 key购买 nike

假设我们有一个不可变的类:

public final class Student
{
final String name;
final int regNo;

public Student(String name, int regNo)
{
this.name = name;
this.regNo = regNo;
}
public String getName()
{
return name;
}
public int getRegNo()
{
return regNo;
}
}

假设我们创建了最终变量,以便它们的值在对象创建后无法更改。此处尚未定义 nameregNo 的值。但我确实有一个问题。我们知道,如果我们不给它们赋值,它将采用默认值。所以,如果我不分配任何值,它将是

name = null & regNo = 0

所以我的问题是,如果它已经被分配了默认值,我们以后如何为它们分配值?

最佳答案

在初始化之前,这些值确实为 null0:

public static final class Student
{
final String name;
final int regNo;

public Student(String name, int regNo) throws NoSuchFieldException, IllegalAccessException {
System.out.println("BEFORE ASSIGNMENT:");
System.out.println(getName());
System.out.println(getRegNo());

this.name = name;
this.regNo = regNo;

System.out.println("AFTER ASSIGNMENT:");
System.out.println(getName());
System.out.println(getRegNo());
}
public String getName()
{
return name;
}
public int getRegNo()
{
return regNo;
}

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
new Student("Rahul", 3);
}
}

打印:

BEFORE ASSIGNMENT:
null
0
AFTER ASSIGNMENT:
Rahul
3

编译器不会让您在初始化之前直接使用这些值。此外,它强制您在构造对象时分配它们一次(并且仅一次),并且之后永远不会重新分配它们。

关于java - 最终变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47131881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com