Java编程常见问题汇总
本文介绍了Java编程中的一些常见问题汇总,本文总结的都是一些Java代码中比较典型的错误,需要的朋友可以参考下
优先返回空集合而非null
如果程序要返回一个不包含任何值的集合,确保返回的是空集合而不是null。这能节省大量的"if else"检查。
public class getLocationName {
return (null==cityName ? "": cityName);
}
频繁使用计时器
错误代码:
for (...) {
long t = entTimeMillis();
long t = Time();
Date d = new Date();
Calendar c = new GregorianCalendar();
}
每次new一个Date或Calendar都会涉及一次本地调用来获取当前时间(尽管这个本地调用相对其他本地方法调用要快)。
如果对时间不是特别敏感,这里使用了clone方法来新建一个Date实例。这样相对直接new要高效一些。
正确的`写法:
Date d = new Date();
for (E entity : entities) {
mething();
pdated((Date) e());
}
如果循环操作耗时较长(超过几ms),那么可以采用下面的方法,立即创建一个Timer,然后定期根据当前时间更新时间戳,在我的系统上比直接new一个时间对象快200倍:
private volatile long time;
Timer timer = new Timer(true);
try {
time = entTimeMillis();
duleAtFixedRate(new TimerTask() {
public void run() {
time = entTimeMillis();
}
}, 0L, 10L); // granularity 10ms
for (E entity : entities) {
mething();
pdated(new Date(time));
}
} finally {
el();
}
捕获所有的异常
错误的写法:
Query q = ...
Person p;
try {
p = (Person) ingleResult();
} catch(Exception e) {
p = null;
}
这是EJB3的一个查询操作,可能出现异常的原因是:结果不唯一;没有结果;数据库无法访问,而捕获所有的异常,设置为null将掩盖各种异常情况。
正确的写法:
Query q = ...
Person p;
try {
p = (Person) ingleResult();
} catch(NoResultException e) {
p = null;
}
忽略所有异常
错误的写法:
try {
doStuff();
} catch(Exception e) {
l("Could not do stuff");
}
doMoreStuff();
这个代码有两个问题, 一个是没有告诉调用者, 系统调用出错了. 第二个是日志没有出错原因, 很难跟踪定位问题。
正确的写法:
try {
doStuff();
} catch(Exception e) {
throw new MyRuntimeException("Could not do stuff because: "+ essage, e);
}
重复包装RuntimeException
错误的写法:
try {
doStuff();
} catch(Exception e) {
throw new RuntimeException(e);
}
正确的写法:
try {
doStuff();
} catch(RuntimeException e) {
throw e;
} catch(Exception e) {
throw new RuntimeException(essage(), e);
}
try {
doStuff();
} catch(IOException e) {
throw new RuntimeException(essage(), e);
} catch(NamingException e) {
throw new RuntimeException(essage(), e);
}
不正确的传播异常
错误的写法:
try {
} catch(ParseException e) {
throw new RuntimeException();
throw new RuntimeException(ring());
throw new RuntimeException(essage());
throw new RuntimeException(e);
}
主要是没有正确的将内部的错误信息传递给调用者. 第一个完全丢掉了内部错误信息, 第二个错误信息依赖toString方法, 如果没有包含最终的嵌套错误信息, 也会出现丢失, 而且可读性差. 第三个稍微好一些, 第四个跟第二个一样。
正确的写法:
try {
-
java图片处理功能介绍
java可实现缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等常用功能,本文是本站小编搜索整理的关于java图片处理功能介绍,供参考学习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!代码如下复制代码importaComposi...
-
关于java实验报告模板
1.掌握JavaApplet的程序结构和开发过程。2.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法。3.掌握文本框对象的使用方法。4.掌握按钮类对象的使用方法。5.掌握布局管理器的用法。6.理解ActionEvent事件的`含义。7.掌握事件源、监视器、处理事...
-
计算机二级JAVA考试强化训练题(单选)
为帮助考生们更快第掌握二级JAVA相应知识点,以下是本站小编搜索整理的一份计算机二级JAVA考试强化训练题(单选),供参考练习,预祝考生们考出自己理想的成绩!想了解更多相关信息请持续关注我们应届毕业生考试网!单选题1).下列关于Applet的安全限制的叙述中,错误的是(...
-
Java程序设计示例教程
本文以实例形式详细讲述了Java的反射机制,是Java程序设计中重要的技巧。分享给大家供大家参考。具体分析如下:首先,Reflection是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得Java类...