旋旋丶 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 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员