Java static final关键字的区别

static 关键字:修饰变量、方法、静态块

  • 修饰变量: 在静态存数区只在首次调用该类时初始化一次,后面再new该类的对象时不再进行多次的初始化,多对象之间共同使用
  • 修饰方法: 类的方法本身就在静态存储区,供类的多个对象使用同一个方法,修饰方法后,可以使用 类名.方法名 直接使用该方法
  • 修饰代码块(静态块): 代码块里的内容只在首次调用该类时初始化一次,后面再new该类的对象时不再进行多次的初始化
  • 静态导包:使用类名.方法名直接调用方法

final关键字:修饰变量、方法、类

  • 修饰变量:基本数据类型变量、引用类型变量、方法中的参数
    (修饰引用类型的变量时,对象中的属性值可以改变,但对象的引用地址即变量不可变,不可指向其它对象)
  • 修饰方法:锁定方法不能被继承类重写修改
  • 修饰类:不能被继承

其它的不可变对象:
Collections.unmodifiableXXX : Collections 、List、 Set、M ap

	   Map<Integer, Integer> map = new HashMap<>();
		map.put(1, 2);
		map.put(3, 4);
		map.put(5, 6);
		map = Collections.unmodifiableMap(map);

线程不安全类:

ArrayList、HashSet、HashMap (线程不安全,对应的安全类有很多)
StringBuffer(安全,加了synchronized关键字同步,比较慢) 
StringBuilder(不安全,方法局部变量经常使用它)

线程不安全写法:
先检查在执行

if(condition(a)){   // 注意a是否为线程安全类
handle(a);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值