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