1.final是一个关键字,表示最终的,不可变的
2.final修饰的变量无法继承
3.final修饰的方法无法被覆盖
4.final修饰的变量一旦赋值之后,不可重新赋值
5.final修饰的实例变量,必须手动赋值,不能采用系统默认值
6.final修饰的引用:
final修饰的引用一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器收回。
7.final修饰的实例变量是不可变的,变量一般和static联合使用,被称为“常量”
package finalguanjianzi;
public class finalTest001 {
/* 打开某个.class字节码文件,当没有看到源码的时候:
* 点击“Attached Source”:
* -Workspace..【源代码在当前工作区当中】
* -External File..【源代码在某个压缩包当中】
* -External Folder..【源代码在某个目录当中】
* */
public static void main(String[] args) {
}
}
package finalguanjianzi;
public class FinalTest002 {
final int age=10;
final int num;
public FinalTest002() {
this.num =200;
}
//在构造方法的同时给变量赋值。
public static void main(String[] args) {
}
}
package finalguanjianzi;
public class FinalTest003 {
public static void main(String[] args) {
User u = new User(100);
//有创建一个新的User对象。
//程序执行到此处,表示以上对象已经编程垃圾数据,等待垃圾回收站的回收。
u=new User(200);
//创建用户对象
final User user = new User(300);
System.out.println(user.id);
//user =new User(50);final修饰的引用一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法
//被垃圾回收器收回。
user.id=50;//final修饰符虽然指向某个对象之后不能指向其他对象,但是所指向的对象内部内存是可以被修改的。
System.out.println(user.id);
}
}
package finalguanjianzi;
public class User {
int id;
public User(int id) {
super();
this.id = id;
}
}
package finalguanjianzi;
public class finalTest004 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Chiese.country);
}
}
class Chiese{
//final修饰的实例变量是不可变的,变量一般和static联合使用,被称为“常量”
//常量定义的语法格式:
// public static final 常量名=值;
//java规范要求所有常量名用大写,每个单词的下划线连接
public static final String country ="中国";
}