关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性
- final 修饰类,这个类就不能被继承; 如:String类、StringBuffer类、System类等 ;
- final 修饰方法:不能被重写; 如:Object类的getClass();
- final 修饰属性,变为常量 属性(没有默认初始化的值);习惯上,常量用大写字符来写! final常量一旦确定后,就禁止再次复制!
- 变量用 static final +类型 来修饰,即为全局变量!
- final修饰参数类型,eg:(final Other o){ //强制保护对象o不被new…,但其内部数据仍能修改 ;
package Coding;
public class Main_of_Coding {
public static void main(String[] args) {
C c=new C(); //输出全局变量
Other o1=new Other();
o1.addOne(o1);
}
}
class C{
static final int II =77777 ;
public C() {
//I=666; 非法!常量一旦确定后,就禁止再次复制!
System.out.println("6666 "+II);
}
}
class Other{
public int i=0;
public void addOne(final Other o){ //强制保护对象o,但其内部数据仍能修改
o.i++;
System.out.println(o.i);
}
}
测试结果:
6666 77777
1
一、赋值的方式
1、可以定义变量时直接赋值
2、可以在代码块中进行赋值(静态代码块和构造代码块)
3、可以再构造方法中进行赋值。
总结起来,就是要在对象创建之前完成赋值的过程。
二、值能不能改变的问题
1、对于基本数据类型的,如byte short char int 等,赋值后被final修饰的变量不能改变。
2、对于引用数据类型,地址不能改变,但是地址中的值可以发生改变。(String和包装类除外)