Java基础关键字:final,static

一 . final

        1)含义:adj.最后的,最终的; 决定性的; 不可更改的。在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。

        2)修饰成员变量、局部变量:在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。更重要的是,final会告诉编译器,这个数据是不会修改的,那么编译器就可能会在编译时期就对该数据进行替换甚至执行计算,这样可以对我们的程序起到一点优化。针对引用类型和基本类型有点不一样。

class Value{
	private int i;

	public Value(){
	}
	public Value(int i){
		this.i = i;
	}
	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}
}
public void finalTest(){
	//基本数据类型
	final int a ;
	a = 1;
//        a = 2; 编译提醒报错
	final Value value = new Value(2);
	value.i = 3;//改变对象的属性值,编译没报错
//         value = new Value(4);//新对象,编译报错
}

final修饰基本数据类型的时候,变量的值不可以改变;final修饰引用类型的时候,变量引用的对象的地址不可以改变(只能指向该对象,无法再指向其他对象),但是引用的对象是可以改变的。

        3)修饰方法:方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。

class Value{
    public final int test(){
	return 1;
    }
}
class SubValue extends Value{
//   @Override
//   public final int test(){//compilation error:override method is final
//            return 2;
//   }
}

上述例子,子类无法重写父类的final方法,编译不通过。

        4)修饰方法参数:方法的形参使用final修饰,代表在这个方法里面该参数都无法被修改(基础数据类型无法修改,引用类型无法修改引用对象的地址)。

public void fianlParams1(final int i){
//  i = 3;//compilation error: can not assign a value to final variable "i"
}
public void fianlParams2(final Value i){
//  i = new Value(12);//compilation error: can not assign a value to final variable "i"
}

        5)修饰类:使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

二. static

       static:adj.静止的; 不变的; 静电的; [物]静力的,静态的。常见用途:修饰类的成员变量和成员方法,使得成员变量和成员方法都可以直接通过类去访问,不用通过

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值