Java 编程 笔记
1. 方法的级联调用而没有判断,很容易抛出NullPointerException异常
String infant = session.getAttribute("giant").toString();
session.getAttribute("giant")很可能是null值,再调用toString()会产生空指针异常。
解决方法:
String infant = null;Object plantation = session.getAttribute("giant");if (plantation != null) { infant = plantation.toString();}
对于强制转换的情况:
String infant = ((Elephant)session.getAttribute("giant")).eat();
这里除了会出现NullPointerException值外,还有可能出现ClassCastException。
解决方法:
String infant = null;Object plantation = session.getAttribute("giant");if (plantation != null && plantation instanceof Elephant) { infant = ((Elephant)plantation).eat();}
2. 通过try catch 来控制程序流程是不可取的,对异常的跟踪通常会遍历整个栈。
3. for循环的判断条件应该简单,而不是复杂的表达式,如果遍历次数很多,会对性能造成影响:
List<Bean> beans = new ArrayList<Bean>(); for (int i = 0; i < obj.getPressure().length; i++) { Bean bean = new Bean(); bean.setAccuracy(obj.getAccuracy()[i]); bean.setPressure(obj.getPressure()[i]); beans.add(bean); }
可以优化成:
for (int i = 0, len = obj.getDPressuredrop().length; i < len; i++) { Bean bean = new Bean(); bean.setAccuracy(obj.getAccuracy()[i]); bean.setPressure(obj.getPressure()[i]); beans.add(bean); }
目前很多Java虚拟机都会优化该功能。我们可以使用Sun的server或hotspot模式或者其它jvm实现。
4. String的startsWith(String prefix),prefix是大小写敏感的。