final关键字

1、final数据

  •   表示永不改变的编译期常量。这类常量必须是基本数据类型,在定义时就进行赋值。一个既是static又是final 的域只占据一段不能改变的存储空间。
  •   在运行时初始化的值,而你不希望他被改变。

  注意:如果使用final的数据不是基本类型而是其他的对象引用,那么是指引用不再改变,即一旦引用指向某个对象后不能再指向其他的对象,但是对象自身是可以被修改的;对于基本类型则是保持数值恒定不变

class A{
	public int data=1;
}
public class ReuseTest {
	private static final A a = new A(); 
	public static void main(String[] args) {
		ReuseTest rt = new ReuseTest();
		A b = new A();
		rt.a = b;	//编译错误
		a.data = 2;	//可以正常运行
	}
}

空白final:指声明为final但未给定初始值的域,空白final必须在每个构造器中用表达式进行赋值

class A{
	public int data=1;
	private  final int b;
	public A() {
		b=1;
	}
	public A(int a) {    //编译错误,在此构造器中未对b赋值
	}

}

final参数:可以在方法中使用声明为final的参数,表示无法再方法中改变参数引用所指向的对象

class A{
    public void f(final A a){
        a = new A()    //编译错误
    }
}

2、final方法

  • 使用final方法可以防止子类修改它的含义,子类无法重写父类的final方法。
  • 早期的java使用final方法可以提高效率,现在不是很必要。
  • private方法也可以声明为final但没有任何实际作用,因为private方法本身无法重写

3、final类

   将类设置成final则该类无法被继承,即该类无子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值