package com.itheima.d3_final;
/**
* 目标:明白final一些基本语法知识
*/
public class Test{
//属于类,只加载一次,可以共享(常量)
public static final String schoolName = "黑马";
public static final String schoolName2;
static {
schoolName2 = "传智";
//schoolName2 = "传智"; // 第二次赋值,报错了!
}
// 属于对象的!(final基本上不会用来修饰实例成员变量,没有意义!)
private final String name = "王麻子";
public static void main(String[] args) {
//schoolName = "传智"; //第二次赋值,报错了!
Test t = new Test();
// t.name = "麻子"; //第二次赋值,报错了!
System.out.println(t.name);
//final修饰变量,变量有且仅能被赋值一次。
/**
* 变量有几种:
* 局部变量。
* 成员变量。
* --1.静态成员变量
* --2.实例成员变量
*/
final int age;
age = 12;
//age =20; //第二次赋值,报错了!
System.out.println(age);
final double rate = 3.14;
buy(0.8);
}
public static void buy(final double z) {
// z=0.1 ; //第二次赋值,报错了!
}
}
/**
* final修饰类 类不能被继承了
*/
//
//final class Animal{
//}
//class Cat extends Animal{
//
//}
class Animal{
public void run(){
System.out.println("动物可以跑~~");
}
}
class Tiger extends Animal{
// @Override
// public void run() {
// System.out.println("老虎跑的贼快~~~");
// }
}
package com.itheima.d3_final;
public class Test2 {
public static void main(String[] args) {
//final修饰变量的注意事项:
//1.final修饰基本类型变量,其数据不能再改变
final double rate = 3.14;
// 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]);
}
}