gpt4 book ai didi

java - 最终(常量)实例(非静态)变量的行为与类(静态)变量类似吗?

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

在以下示例中,变量 b 被声明为 final,但不是 static。这意味着它是一个常量实例变量。但是,由于它是常量,因此任何 Passenger 对象都无法更改其值。那么,将其声明为static并使其成为类变量,这样所有实例化对象都只使用一份副本不是更好吗?

class Passenger {
int a;
final int b = 0;

void drive() {
System.out.println("I'm driving!");
}
}

最佳答案

final 但非static 变量的目的是拥有一个对象范围的常量。它应该在构造函数中初始化:

class Passenger {
final int b;

Passenger(int b) {
this.b = b;
}
}

如果您始终将常量文字值 (0) 分配给 final 变量,则没有多大意义。首选使用 static,这样您就只有 b 的单个副本:

static final int b = 0;

顺便说一句,我不认为拥有默认访问修饰符是您的意图。

关于java - 最终(常量)实例(非静态)变量的行为与类(静态)变量类似吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9699524/

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