旋旋丶 2015-06-06 09:32 采纳率: 0%
浏览 4307

final修饰的终态变量只能在声明变量时或构造函数里赋值嘛?

class GongChengShi {
final String name;//名字
final String dizhi;//地址
int age;//年龄
public GongChengShi(String name, int age) {
this.name = name;//构造函数初始化时给名字和年龄赋值
this.age = age;
}
void setDizhi(String dizhi){//在子类中调用这里给地址赋值
this.dizhi = dizhi;
}
}
输出结果
---------- javac ----------
Hello.java:36: 错误: 无法为最终变量dizhi分配值
this.dizhi = dizhi;
^
1 个错误

我dizhi在声明变量时直接赋值可以,在构造函数里赋值也可以,但是放到普通方法里赋值就不行了。
final修饰的变量只能在声明变量时赋值或者在构造函数里赋值嘛?

  • 写回答

7条回答 默认 最新

  • 想长胖胖 2015-06-06 10:06
    关注

    第一点,成员变量必须有初始化值,也就是你没有给String赋值,系统默认会在给他一个null;你也知道他叫做最终变量,你类已经加载了你还想再给他赋值,而构造函数是在类加载的时候自动给他赋值的就不一样了。能理解吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料