final的作用
- final关键字是最终的意思,可以修饰(方法,变量,类)
- 修饰方法:表明该方法是最终方法,不能被重写。
- 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
- 修饰类:表明该类是最终类,不能被继承。
package d3_final; //目标:明白final的一些基本语法知识 import d1_package.Test; public class test { //属于类,只加载一次,可以共享 public static final String schoolName="牛批"; public static final String schoolName2; static { schoolName2="777"; // schoolName2="888";//第二次赋值,报错了 } //属于对象的!(final基本上不会用来修饰实例成员变量,没有意义) private final String name="王麻子"; public static void main(String[] args) { // schoolName="666";//第二次赋值,报错了 //final修饰变量,变量有且仅能被赋值一次 // 变量有几种 //局部变量 //成员变量 //1.静态成员变量。 //2.实例成员变量。 final int age; age=12; // age=20;//第二次赋值,报错了 System.out.println(age); final double rete=3.14; buy(0.8); } public static void buy(final double z){ // z=0.1;//第二次赋值,报错了 } } //final修饰类 类不能被继承了 //final class Aninal{ //} //class Cat extends Aninal{ //} //final修饰方法,方法不能被重写 //class Aninal{ // public final void run(){ // System.out.println("动物可以跑!"); // } //} // //class Tiger extends Aninal{ // @Override // public void run() { // super.run("老虎跑的贼快"); // } //}
final修饰变量的注意:
-
final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
-
final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
package d3_final;
public class Test2 {
public static void main(String[] args) {
//final修饰变量的注意事项
//1.final修饰基本类型变量,其数据不能再改变
final int rate=21;
// rate=3.15;//第二次赋值,报错
//2.final修饰引用数据类型的变量,变量中存储的地址不能改变,但是地址指向的对象内容可以改变。
final int arr[]={10,20,30};
System.out.println(arr);
// arr=null;//属于第二次赋值,arr中的地址不能改变
arr[1]=200;
System.out.println(arr);
System.out.println(arr[1]);
}
}