2021.02.07
第三次记录
今天将final关键字学习完。
课堂笔记:
/*final:
*1. final是java语言中的一个关键字
*2.final表示:最终的,不可变的。
* 3.final修饰的局部变量,一旦赋值不能重新赋值。
* final修饰的变量,只能赋一次值。
* 4.final修饰的方法无法被覆盖/重写。
* 5.final修饰的类无法继承
* 6.final控制不了能不能调用的问题
* 7.final修饰的引用:
* 该引用只能指向一个对象,并且它只能永远指向该对象,无法再指向其他对象。
* 并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收站回收,
* 直到当前方法结束,才会释放空间
* 8.虽然final的引用指向对象A后,不能再重新指向对象B,但是对象A内部的数据可以被修改
* 9.final修饰的实例变量,系统不会赋默认值,程序员必须手动赋值,这个手动赋值在变量后
* 面赋值也可以,在构造方法中赋值也可以。如:
* class User {
* final int age = 10;
* final double high = 1.80;
* }
* 10.static final联合修饰的实例变量为“常量”,
* 常量名建议全部大写,每个单词之间采用下划线衔接,如:“CHINA_NATIONALITY”
* 11.常量:实际上常量和静态变量一样,都是存储在方法区,并且都是在类加载时初始化。
* 常量一般都是公共的、公开的:public的*/
代码演示:
public class finalDemo {
public static void main(String[] args) {
/*
User u = new User(1.80);
System.out.println(u.age);
System.out.println(u.high);
*/
Chinese china1 = new Chinese();
System.out.println("中国国籍:" + china1.CHINA_NATIONALITY);
Chinese china2 = new Chinese("张三", "1008611", 30);
System.out.println("姓名:" + china2.name);
System.out.println("身份证号:" + china2.IdCard);
System.out.println("年龄:" + china2.age);
}
}
/*
class User {
final int age = 20;
final double high;
public User(double h) {
this.high = h;
}
}
*/
class Chinese {
String name;
String IdCard;
int age;
public static final String CHINA_NATIONALITY = "中国";
public Chinese() {
}
public Chinese(String name, String IdCard, int age){
this.name = name;
this.IdCard = IdCard;
this.age = age;
}
}
输出结果:
中国国籍:中国
姓名:张三
身份证号:1008611
年龄:30