是时候抛弃一些旧方法,使用新版jdk提供的方法

Java编程技巧与最佳实践
本文探讨了Java编程中常见的几个问题及解决方案,包括安全地进行字符串比较、高效遍历Map集合、合理创建线程、处理日期时间以及生成随机数的最佳做法。

(1)   object.equals("test"); 

  object容易报空指针异常,推荐使用  "test".equals(object);  

  JDK7 引入了 java.util.Objects#equals ,Objects.equals(o1,o2)已经处理了空指针。

(2)   遍历Map时候有三种方式:

1>keySet   其实keySet遍历了两次,一次是转为iterator对象,第二次是从hashMap取出相应的key对应的value

2>entrySet  遍历一次把key-value都放入了entry中

3>JDK8提供的Map.foreach方法。推荐使用

(3)   创建线程资源必须通过线程池来提供,不允许自行显式创建线程

(4)   SimpleDateFormat是线程非安全类,不要定义为static。可以使用DateUtils工具类,也可使用以下方式:

private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {       
 	@Override        
	protected DateFormat initialValue() {         
  	 return new SimpleDateFormat("yyyy-MM-dd");     
  	 }    
}; 


JDK8中提供了更好的方式:Instant代替Date,LocalDateTime代替Calendar,DateTimeFormatter代替SImpleDateFormatter。

private void timeDD() {
        Instant now = Instant.now();
        LocalDateTime localDateTime=LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter= DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String nowFormat=dateTimeFormatter.format(now);
    }
(5)   Random被多线程使用。会因竞争同一个seed导致性能下降

private void randomDD(){
        /*java.util.Random实例*/
        Double randomDouble1=new java.util.Random().nextDouble();
        /*Math.random实例*/
        Double randomDouble2=Math.random();
        /*JDK7之后可以直接使用 API ThreadLocalRandom ,推荐使用*/
        Double randomDouble3= ThreadLocalRandom.current().nextDouble();
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值