final使用
final表示最终的,不可变的final修饰的类无法被继承final修饰的方法无法被覆盖重写final修饰的变量一旦赋值,不可以重新赋值【不可二次赋值】final修饰的实例变量,必须手动赋值,不可采用系统赋的默认值final修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收final修饰的引用虽然不可以再指向其他对象,但是指向的对象内部的内存是可以改变的- 常量语法格式:
public static final 类型 常量名 = 值;
1、 final 表示最终的,不可变的
2、 final 修饰的类无法被继承
final class Animal {}
//以下会报错
//class Cat extends Animal {}
3、 final 修饰的方法无法被覆盖重写
class B{
public final void m(){}
}
class C extends B{
//编译报错
//public void m(){}
}
4、final 修饰的变量一旦赋值,不可以重新赋值【不可二次赋值】
int i = 10;
i = 20;
final int k = 100;
//编译报错:无法为最终变量 k 分配值
//k = 200;
final int m;
m = 10;
//编译报错:无法为最终变量 m 分配值
//m = 20;
5、final 修饰的实例变量,必须手动赋值,不可采用系统赋的默认值
public class Test{
//编译报错
//final int i;
//第一种解决方案
final int i = 100;
//第二种解决方案
final int age;
public Test(){
this.age = 20;
}
public static void main(String[] args){
final int age;
age = 100;
//不可二次赋值
//age = 200;
}
}
6、 final 修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收
public class Test{
public static void main(String[] args){
//创建对象
User u1 = new User(20); // User u1 = 0x1234
//程序执行到这里表示上面的对象变成了垃圾数据,回收器回收
//这里是又创建了一个新的对象
u1 = new User(10); // u1 = 0x4567
final User u2 = new User(30);
//编译报错
//u2 = new User(50);
}
}
class User{
int age;
public User(){}
public User(age){
this.age = age;
}
}
7、 final修饰的引用虽然不可以再指向其他对象,但是指向的对象内部的内存是可以改变的
public class Test{
public static void main(String[] args){
final User u2 = new User(30);
//编译报错
//u2 = new User(50);
//通过
u2.age = 40;
}
}
8、 因为final 修饰的数据是不可变的,所以现在引入常量的概念
常量
语法格式: public static final 类型 常量名 = 值;
常量名要求字母全部大写,单词之间用下划线连接
public class Test{
public static void main(String[] args){
System.out.println(Chinese.GUO_JI);
System.out.println(Math.PI);
}
}
class Chinese{
public static final String GUO_JI = "中国";
}
class Math{
public static final int PI = 3.1415926;
}
小结
final表示最终的,不可变的final修饰的类无法被继承final修饰的方法无法被覆盖重写final修饰的变量一旦赋值,不可以重新赋值【不可二次赋值】final修饰的实例变量,必须手动赋值,不可采用系统赋的默认值final修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收final修饰的引用虽然不可以再指向其他对象,但是指向的对象内部的内存是可以改变的- 常量语法格式:
public static final 类型 常量名 = 值;
本文详细介绍了Java中final关键字的使用,包括final修饰类、方法、变量和引用的效果。final关键字确保了不可变性,防止继承、方法重写和二次赋值。同时,它在对象引用中影响垃圾回收,但不影响对象内部状态的修改。此外,文章还讨论了常量的定义和命名规范。通过对final的深入理解,有助于提升代码的稳定性和安全性。
797

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



