final关键字用法
final 关键字用法:
- 用法:①不能改变、赋值指定为final的成员变量②不能重写指定为final的方法③不能继承指定为final的类
- 优势:①final方法在编译阶段绑定,称为静态绑定(static binding),编译时常量,永远不可改变。②jvm在运行的时候,会直接将final方法直接嵌进来,效率会大大提升。JVM和Java应用都会缓存final变量,以提高性能。③final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
package com.interview.javabasic.attributesKeyWord;
import java.util.Random;
import static java.lang.Math.max;
import static java.lang.System.out;
/**
* @program: javabasic
* @description: 1.static关键字导入静态成员
* 2.final 关键字用法:
* ①不能改变、赋值指定为final的成员变量②不能重写指定为final的方法③不能继承指定为final的类
* @author: liujiang
* @create: 2019-11-29 03:54
**/
class Test{
int i = 0;
}
public class Finalkeyword {
static Random random = new Random();
private final int VALUE_1=9; //声名一个final常量
private int VALUE_3;
private static final int VALUE_2=10; //声名一个final、static常量
private final Test test = new Test(); //声名一个final引用
private Test test2 = new Test(); //声名一个普通引用
private final int[] a = {1,2,3,4,5,6}; //声名一个final的数组
private final int i4 = random.nextInt(20);
//i5与i4的不同,在内存中为i5开辟了一个恒定不变的区域,只初始化一次
// 当再次实例化所属类对象Finalkeyword时,仍然指向i5这块内存区域
private static final int i5 = random.nextInt(20);
@Override
public String toString() {
return i4 + "" + i5;
}
public static void main(String[] args) {
out.println("1和4较大的值为: " + max(1,4));
Finalkeyword finalkeyword =new Finalkeyword();
//finalkeyword.VALUE_1++; 不能改变、赋值指定为final的常量
int t= finalkeyword.VALUE_2;
finalkeyword.VALUE_3=4;
//finalkeyword.test= new Test(); 不能将定义为final的引用指向其他引用
finalkeyword.test2 = new Test(); //可以将没定义为final的引用指向其他引用
}
}