一、final关键字
1.final是java的一个关键字
2.final意为“最终的”,“不可变的”
3.final修饰的局部变量,一旦赋值不能重新赋值
4.final修饰的变量,只能赋一次值。
5.final修饰的方法无法被覆盖/重写。
6.final修饰的类无法继承
6.final控制不了能不能调用的问题
7.final修饰的引用:
该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其他对象。
并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收站回收,
直到当前方法结束,才会释放空间
8.虽然final的引用指向对象A后,不能再重新指向对象B,但是对象A内部的数据可以被修改
9.final修饰的实例变量,系统不会赋默认值,程序员必须手动赋值,这个手动赋值在变量后面赋值也可以,在构造方法中赋值也可以。如:
class Chinese {
final String name;
final String ID;
int age;
public static final String CHINA_NATIONALITY = "中国";
}
10.final修饰的类变量必须在声明的同时初始化
没有初始化i,编译不通过;
初始化i后,编译通过;
实际上,static final联合修饰的实例变量可以视为“常量”,
11.常量:实际上常量和静态变量一样,都是存储在方法区,并且都是在类加载时初始化。
常量一般都是公共的、公开的:public的*/
代码演示:
/*练习关键字final以及数据类型*/
package demo;
public class finalDemo{
public static void main(String[] args) {
Chinese Zhangsan = new Chinese("张三","412725",24);
System.out.println("国籍:"+Zhangsan.CHINA_NATIONALITY);
System.out.println("姓名:"+Zhangsan.name+"\n"+"身份证号:"+Zhangsan.ID+"\n"+"年龄:"+Zhangsan.age);
}
}
class Chinese {
final String name;
final String ID;
int age;
public static final String CHINA_NATIONALITY = "中国";
public Chinese(String name,String ID,int age) {
this.name = name;
this.ID = ID;
this.age = age;
}
}
输出结果:
国籍:中国
姓名:张三
身份证号:412725
年龄:24