final修饰的变量可以被改变了?高手来看看

bb100044535 bb100044535 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先看代码
class People {
int i;
People(int ii) {
i = ii;
System.out.println(i);
}
}

public class FinalTest {
private final int i = 1;
private final int j;
private final People p;
public FinalTest() {
j = 2; //问题在这,被final修饰的变量不是常量吗?不是不能改变吗?
p = new People(3);
System.out.println(j);
}
public FinalTest(int x) {
j = x;
p = new People(x);
System.out.println(j);
}
public static void main(String[] args) {
FinalTest ft = new FinalTest();
FinalTest ft1 = new FinalTest(4);
}
}

在这个代码中,不管是被final修饰的基本数据类型还是引用似乎都可以改变,高手来解释!
此程序可以编译通过,并能正确运行。
...全文
评论 38
收藏 已收藏
分享
返回顶部
bb100044535
Java SE 62,620 成员 307,251 内容