【Coding】Coding相关

本文总结了Java编程中的代码实现细节和知识点拾遗,包括避免装拆箱、使用新语法、优化字符串操作、集合对象容量预估、多字符串连接优化、异常处理策略等,旨在提升代码性能和降低资源消耗。
摘要由CSDN通过智能技术生成

summary

Work summary, technical summary and guide.

一、代码实现细节

1、避免频繁进行装拆箱,十分影响性能,特别是在循环中(在下面两个示例中仅仅修改了数据类型,就达到了性能上的20倍提升):

// 一般实现
public static void main(String[] args) {
   
   long t = System.currentTimeMillis();
   Long sum = 0L;
   for (Long i = 0L; i < 1000000000L; i = i + 1) {
   
     sum = sum + i;
   }
   System.out.println("processing time: " + (System.currentTimeMillis() - t) + " ms");
}

processing time: 5142 ms
// 更好的实现
public static void main(String[] args) {
   
   long t = System.currentTimeMillis();
   long sum = 0L;
   for (long i = 0L; i < 1000000000L; i = i + 1) {
   
     sum = sum + i;
   }
   System.out.println("processing time: " + (System.currentTimeMillis() - t) + " ms");
}

processing time: 247 ms

此外:字符串转基本类型时应使用parseXXX(String str),转包装类型时才使用valueOf(String str)

// 一般实现
Integer reserve = defaultReserve;
if (StringUtils.isNumeric(params.getReserve())) {
   
    reserve = Integer.valueOf(params.getReserve()) + 1;
}
// 更好的实现
Integer reserve = defaultReserve;
if (StringUtils.isNumeric(params.getReserve())) {
   
    reserve = Integer.parseInt(params.getReserve()) + 1;
}

2、匿名内部类修改为lambda表达式,提升性能,简化代码(示例场景:文件名前缀和后缀过滤):

// 一般实现
String[] fileNames = file.list(new FilenameFilter() {
   
   @Override
   public boolean accept(File dir, String name) {
   
     return name.startsWith("wsf") && name.endsWith(".xml");
   }
});
// 更好的实现
String[] fileName = file.list((dir, name) -> name.startsWith("wsf") && name.endsWith(".xml"));

3、优先使用Java 7的新语法try-with-resources来关闭AutoCloseable的资源:

// 一般实现
InputStream in = new ZipInputStream(new BufferedInputStream(inputStream));
 try {
   
   // do something
 } finally {
   
   if (in != null) {
   
     try {
   
       in.close();
     } catch (IOException e) {
   
     }
   }
}
// 更好的实现
try (InputStream in = new ZipInputStream(new BufferedInputStream(inputStream))) {
   
   // do something
}

4、使用Java 8的Optional来简化连续调用,并消除NullPointerException

// 一般实现,示例场景:获取元素(Element)的子元素(Child Attribute)的属性(Attribute)的值(Value)
public static String getAttributeValue(Element root, String elementName, String attributeName) {
   
   if(root == null) {
   
     return "";
   }
   Element child = root.element(elementName);
   if(child == null) {
   
     return "";
   }
   Attribute attribute = child.attribute(attributeName);
   if(attribute == null) {
   
     return "";
   }
   String value = attribute.getValue();
   if (value == null){
   
     return "";
   }</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值