黑马程序员技术交流社区

标题: Java基础入门中final关键字修饰成员变量的注意事项 [打印本页]

作者: huyang936    时间: 2015-1-28 23:17
标题: Java基础入门中final关键字修饰成员变量的注意事项
  1. class Student
  2. {
  3.         private final String name;
  4.        
  5.         public String getName()
  6.         {
  7.                 return name;
  8.         }
  9. }
  10. class Test33
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Student s = new Student();
  15.         }
  16. }
复制代码
private final String name;//这句会报错

发的Java基础入门124页给出的解释是:
1.因为使用final关键字修饰成员变量时,虚拟机不会对其进行初始化。
2.因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值。
第一句话没错,第二句话有待商榷
研究了下,发现可以有两种解决方案:
1.在默认空构造函数中初始化name
Student()
{
name = "张三";
}
2.在构造代码块中初始化name
{
name = "张三";
}

作者: 朋好友    时间: 2015-1-28 23:21
我感觉被final 修饰得成员变量 是要在本类的函数中实现首次初始化即可   (既不能在测试函数中对其进行赋值  也不能不赋初始化值)
作者: 13922919272    时间: 2015-1-28 23:44
一个常量 你这样赋值有用吗  既然要赋值干嘛要用final
作者: huyang936    时间: 2015-1-28 23:50
13922919272 发表于 2015-1-28 23:44
一个常量 你这样赋值有用吗  既然要赋值干嘛要用final

没用 但技术上可以 实际开发肯定不这样干 但只是感觉书上的话说的太死了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2