🍻🍻🍻小白终于出新手村了。🍻🍻🍻
JavaSE
👑final关键字
- final是Java语言中当一个关键字
- final表示最终的,不可变的。
- final可以修饰变量以及方法,方法还有类等。
- final修饰的变量?
- final修饰的方法?
final修饰的类无法覆盖、重写 - final修饰的类?
final修饰的类无法继承 - final控制不了能不能调用的问题。final管的是啥?
final修饰的表示最后的,不能变的,不能改的。
final修饰的类无法继承
final修饰的类无法覆盖、重写
class C{
public final void doSome(){
System.out.println("1");
}
}
class D ectends C{
public final void doSome(){
System.out.println("1");
}
}
//就报错,D中的doSome()无法覆盖C中的doSome(),被覆盖的方法为final
final修饰的局部变量,只能赋一次值
final修饰引用
- 该引用只能指向1个对象,并且它永远指向该对象。
- 虽然final的引用指向对象A后,不能再重新指向对象B。
但是对象A内部的数据可以改变。
public static void main(String[] args){
person p1 = new Person(20);
System.out.println(p1.age);
//代码不管怎么变化,p也是一个变量。(只不过这里它有个特殊的名字 引用)
final Person p = new Person(30);
//-------------------------
p = new Person(30) // 报错。无法为最终变量p分配值
p = null; //报错。无法为最红变量p分配值
//不能改变地址但是可以改变对象内的age值所以可以这样写↓
p.age = 40;
System.out.println(p.age);
//40
}
final修饰实例变量
系统不管赋默认值,要求程序员必须手动赋值。
实例变量在构造方法执行的过程中赋值(初始化)
系统在构造方法执行的时候才赋值。(new的时候赋值)
只要赶在系统默认值之前赋值。
class User{
final int age;//报错
final double height = 1.8;
//实例变量
final double weight;
public User(){
this.weight = 80;
}
}
常量
static final联合修饰的变量称为常量。
实际上常量和静态变量一样,区别在于常量的值不能变。
常量和静态变量,都是储存在方法区,并且都是在类加载时初始化。