java8-1 final

1、
final可以修饰类,方法,变量

特点:
final可以修饰类,该类不能被继承。
final可以修饰方法,该方法不能被重写。(覆盖,复写)
final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。

常量:
A:字面值常量
"hello",10,true
B:自定义常量
final int x = 10;

2、面试题:final修饰局部变量的问题
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。

 1 class age{
 2 int age = 10;
 3 }
 4 
 5 
 6 class FinalTest2 {
 7 public static void main(String[] args) {
 8 final age num = new age();
 9 System.out.println(num.age);
10 
11 num.age = (20); //这里改变的只是age这个地址里面的元素,而age的地制值没有改变,也无法改变
12 System.out.println(num.age);
13 
14 //num = new age(); 这个是重新给age分配地址值,而final修饰了age,所以错误。
15 }
16 
17 }

 


3、inal修饰变量的初始化时机
A:被final修饰的变量只能赋值一次。
B:在构造方法完毕前。(非静态的常量) 静态时,设置变量时直接赋值
例子:

 1 class Demo {
 2 //int num = 10;
 3 //final int num2 = 20;
 4 
 5 int num;
 6 final int num2;
 7 
 8 {
 9 //num2 = 10;
10 }
11 
12 public Demo() {
13 num = 100;
14 //无法为最终变量num2分配值
15 num2 = 200;
16 }
17 }
18 
19 class FinalTest2 {
20 public static void main(String[] args) {
21 Demo d = new Demo();
22 System.out.println(d.num);
23 System.out.println(d.num2);
24 }
25 }
26 
27  

 

posted @ 2016-09-10 09:41  卡拉瓦  阅读(255)  评论(0编辑  收藏  举报