final在java中有什么作用?
final关键字表示最终的含义
当它用来修饰一个引用时:
<1>:如果引用为基本数据类型,则该引用为常量,该值无法被修改。
<2>:如果引用为引用数据类型,例如,对象/数组等,那么该对象或数组本身可以进行修改,但是指向该对象数
举例:
<3>:如果引用的是类的成员变量,那么它必须在以下几种情况中的至少一种进行初始化: 1:在创建时,进行初始化 2:在类的构造方法中进行初始化 3:在实例化块中进行初始化 4:作为静态成员变量,在静态块中进行初始化 上述三种情况未有至少一种进行,则会直接报错,如下所示:
在声明时,进行初始化:
public class Student { final String name="张三"; }
在类的构造方法中进行初始化:
public class Student { final String name; public Student(String name) { this.name = name; } }
在实例化块中进行初始化:
public class Student { final String name; { name="张三"; } }
作为静态成员变量,在静态块中进行初始化:
public class Student { final static String name; static { name="张三"; } }
当它用来修饰一个方法:
被final修饰的方法称为最终方法,无法被子类重写
,但是,该方法仍然可以被继承
举例:
public class Person { final public void show() { System.out.println("我是小猪佩奇"); } }
当它用来修饰一个类时:
被final修饰的类为最终类,无法被继承,比如我们最常见的String类