读书人

Java 编程 札记

发布时间: 2013-07-11 15:38:46 作者: rapoo

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是大小写敏感的。

读书人网 >编程

热点推荐