一、认识final
final关键字是最终的意思,可以修饰类、方法、变量
修饰类:类不能被继承
修饰方法:方法不能被重写
修饰变量:变量不能被二次赋值
//修饰类:类不能被继承
final class Demo{
public static void main(String[] args) {
final int a = 10;
System.out.println(a);
}
}
class Demo1 extends Demo //Cannot inherit from final class 'ithemaoopday03.src.finaldemo.Demo'
{
public static void main(String[] args) {
final int a = 10;
System.out.println(a);
}
}
//修饰方法,方法不能被重写
public class finalDemo {
public static void main(String[] args) {
/*
*final关键字是最终的意思,可以修饰类、方法、变量
*
* */
}
public final void show()
{
final int a = 10;
System.out.println(a);
}
}
//修饰方法,方法不能被重写
final class Demo extends finalDemo{
@Override
public void show()//'show()' cannot override 'show()' in 'ithemaoopday03.src.finaldemo.finalDemo'; overridden method is final
{
System.out.println("show");
}
}
public class finalDemo {
//修饰静态变量,静态变量不能被二次赋值
public static final int a = 10;//final修饰变量,表示该变量不能被改变,这个变量今后被成为常量
public static void main(String[] args) {
/*
*final关键字是最终的意思,可以修饰类、方法、变量
*
* */
show();
}
public static final void show()
{
a = 20;
System.out.println(a);
}
}
//修饰局部变量,局部变量不能被二次赋值
public static void main(String[] args) {
/*
*final关键字是最终的意思,可以修饰类、方法、变量
*
* 变量分为两类:
* 1.成员变量:静态成员变量和实例成员变量
* 2.局部变量
* */
final int b = 18;
show(b);
}
public static void show(final int b)
{
b = 20;
System.out.println(b);
}
二、final注意事项
final修饰基本类型的变量,变量存储的数据不能被改变
final修饰引用类型的变量,变量存储地址不能被改变,但地址所指向的对象可以被改变
final int[] arry ={11,22,33};
//arry = new int[]{11,22,33};//数组存储地址不能被改变,二次赋值报错
arry[0] = 20;//地址所指向的内容可以改变
三、常量
1,使用了 static final 修饰的成员变量就被成为常量
2. 常用于记录系统的配置信息
3.使用常量的优势:
代码可读性更好,可维护性也更好
程序编译后,常量会被'宏替换';出现常量的地方会被全部替换成其记住的字面量,
这样可以保证使用常量和直接使用字面量的性能是一样的。
public class constantDemo {
//常量
public static final String JAVA_HOME = "D:\\java\\";
public static void main(String[] args) {
System.out.println(JAVA_HOME);
System.out.println(JAVA_HOME);
System.out.println(JAVA_HOME);
}
}
反编译文件:
public class constantDemo {
public static final String JAVA_HOME = "D:\\java\\";
public static void main(String[] args) {
System.out.println("D:\\java\\");
System.out.println("D:\\java\\");
System.out.println("D:\\java\\");
}
}
1020

被折叠的 条评论
为什么被折叠?



