黑马程序员技术交流社区

标题: java中final关键字 [打印本页]

作者: luqh    时间: 2015-3-19 20:52
标题: java中final关键字
final关键字在java中除了可以指定常量还有什么作用呢?那天见了别人的一段代码在线程中传递参数时也会用到final?具体代码找不到了

作者: 大神在何方    时间: 2015-3-19 21:22
被final修饰的类  不可以被继承。。被修饰的方法,不可以给重写
作者: shamoman    时间: 2015-3-19 21:40
我也遇到同样的问题,什么时候要用final?
作者: 罗晓飞    时间: 2015-3-19 21:52
常量,只能赋一次值。。。
作者: luqh    时间: 2015-3-20 20:51
见线程中也有用到final
作者: hamesksk    时间: 2015-3-20 21:17
final 修饰的成员变量 就是常量
final 修饰的方法不能被重写
final 修饰的类不能被继承
多线程中写final 按我的经验,多半是局部内部类要访问外部的成员变量时,成员变量必须是final修饰的
作者: Pakumen    时间: 2015-3-20 22:37
当一个变量需要被定值的时候就需要final,直接固定对象的地址。
被final修饰的方法也不可以被复写,这是除了private的一个小技巧,在API的一些核心方法都会看到。
一般被final修饰的都是一些boolean状态或者一些static的数据,可以防止被各种不可预料的状态改变其数值。
作者: _etc    时间: 2015-3-20 22:55
最简单的理解是finnal就继承不了了。
作者: 东方蓂荚    时间: 2015-3-21 07:29
final:最终的意思
        (1)常见的它可以修饰类,方法,变量。
        (2)特点:
                A:修饰类时,该类不能被继承。
                B:修饰方法时,该方法不能被重写。
                C:修饰变量时,该变量不能被重新赋值。因为这个变量是常量。
                        常量:字面值常量。举例:"hello",10,100
                                  自定义常量。举例:final int x = 10;
        (3)final修饰局部变量
                基本类型:基本类型的值不能发生改变
                引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值可以改变。
        (4)final修饰变量的初始化时机
                A:被final修饰的变量只能赋值一次。
                B:在构造方法完毕前。(非静态的常量)
作者: 高光天    时间: 2015-3-21 08:19
一楼说的对 我是来捧场的
作者: jackwang    时间: 2015-3-21 09:47
hamesksk 发表于 2015-3-20 21:17
final 修饰的成员变量 就是常量
final 修饰的方法不能被重写
final 修饰的类不能被继承

额~~~~,我觉的应该是“局部内部类为了访问方法中的局部变量,所以方法中的局部变量必须被final修饰,而不是成员变量吧“,成员变量不需要被final修饰,就可以被局部内部类访问
作者: luqh    时间: 2015-3-21 09:49
东方蓂荚 发表于 2015-3-21 07:29
final:最终的意思
        (1)常见的它可以修饰类,方法,变量。
        (2)特点:

好详细!看你回答的这么好,倍感压力
作者: 高双    时间: 2015-3-21 09:53
有用  赞赞赞:)
作者: jackwang    时间: 2015-3-21 09:54
东方蓂荚 发表于 2015-3-21 07:29
final:最终的意思
        (1)常见的它可以修饰类,方法,变量。
        (2)特点:

被final修饰的变量,即使是方法中的也会在构造方法完毕前被初始化么?例如:
  1. class Test
  2. {
  3.       void show(String name){
  4.       final Test = new Test("name");}

  5.       Test(){}

  6.       Test(String s)
  7.       {System.out.println(s);}

  8.        public static void main(String[] args)
  9.        {  T t =new T();
  10.           t.show();

  11.       }
  12. }
复制代码

作者: 胡几手    时间: 2015-3-21 09:55
final 修饰的成员变量 就是常量
final 修饰的方法不能被重写
final 修饰的类不能被继承
作者: 东方蓂荚    时间: 2015-3-21 17:59
luqh 发表于 2015-3-21 09:49
好详细!看你回答的这么好,倍感压力

没有,这都是视频上的笔记。




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