java中static、final、static final浅析

参考资料:
https://www.cnblogs.com/EasonJim/p/7841990.html
https://blog.csdn.net/hust_yfang/article/details/79585696
https://blog.csdn.net/zhangyanli0414/article/details/79008681
https://www.cnblogs.com/qq188380780/p/6607578.html


final

  • final可以修饰类、属性、方法、局部变量、参数,不能修饰接口!
  • final修饰类:该类不能被继承(解释了为什么不能修饰接口,不过接口里面的属性、方法等是可以用final修饰的);
  • final修饰属性:表示该属性是一个常数,即值不能改变;
  • final修饰方法:该方法所在的类可以被继承,但是该方法不允许被重写。同时我们知道父类的private方法是不能被重写的,因此private的方法实际上默认就是final的;
  • final修饰局部变量:表示该局部变量是常数。但是需要注意,在修饰局部变量时,可以先仅仅是申明而不赋值,但是必须要在第一次使用前给它赋初值,并且赋值后不能修改;
  • final修饰参数:可以读取改参数,但是不能修改。

注意:final如果修饰的是一个引用,比如说Student a = new Student();,那么不可以a = b;(假设b是另一个Student类型的对象),但是可以对a所指向的这个Student类的内部属性进行修改,比如修改其姓名年龄之类的。


static

  • static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)
  • static修饰的属性其值是可变的,它更强调的是“单例”性
  • static修饰的属性、方法、代码段可以在不创建该类的对象的情况下被调用,且即便是该类创建了很多个对象,被static修饰的部分永远只有一份实例,所有的对象共同享有这一个实例,如果不小心的话这有可能会导致一些问题
  • static不能喝this、super联用,因为static与具体对象无关,而thissuper显然有关
  • static不可以修饰局部变量

java中被static修饰的成员变量,存储在方法区(注意不是堆也不是栈)!


static final

static finalfinal static是一样的,不过习惯上都写成static final
这个修饰符就是综合了static和final两者的功能。

  • 修饰属性:表示该属性只有一个实例且不能被改变,且可以通过类名调用
  • 修饰方法:表示该方法不能被重写,且可以通过类名被调用

总结

static强调唯一性,而final强调不可变性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值