java中final用法

final可以修饰变量,方法还有类。

final修饰变量又分普通变量,比如说int,double等等类型的;还有就是数组,字符串,class类型的;

1.final修饰普通变量时,在被第一次赋值后值就再也不可以改变,例如final int a=1,则接下来若改变a的值就会报错(a=2,报错),但是当final int a没有被初始化的话,第一次赋值a=2不会报错,之后再改变会。

2.final在修饰特殊变量,比如说数组时,final array[] a=new array[]{1,2,3},指的是a指向这个new的地址值,且a指向永远不能改变。但是a指向的地址的值可以改变。

3.final在修饰方法时,一般是用在类里面的方法,是为了防止继承类(子类)改变该方法。子类不能覆盖该方法。

4.final在修饰类时,则表示该类不能被继承,则无子类。

final与static的区别:

        static是静态变量,(全局的)定义了第一次之后,下一次就不用再定义(例如某类构造函数中有static int a=3,则第一次建立该类对象后,再一次建立新对象则不会再定义了static int a=3这个语句了)。要调用该变量,需要类名.变量名才行,因为它是属于一个类的,不单独属于某个对象。

        final是表示被修饰的变量值一旦被赋值就不能改变(只针对普通变量,特殊变量上面有,自己去看)

当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。(这段不懂的话,具体去看浅析Java中的final关键字 - Matrix海子 - 博客园 (cnblogs.com) )深入了解第一个。

思考:在类的方法中给形参修饰final好像不能达到c++中直接给函数修饰const的效果,所以怎么才能达到函数只读取数据而不能改变数据

(本人是个编程菜鸟,自己看网上大佬解释后整理了一些东西,如果有人看到这篇文章且发现不对的地方,请多多赐教,Thanks♪(・ω・)ノ)

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值