慎用Java装箱与拆箱
转自http://xyiyy.javaeye.com/blog/358401
J2SE5.0后提供了自动装箱与拆箱的功能,此功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的方法,决定是否进行装箱或拆箱动作。例如:
Integer i = 100;
相当于编译器为您作以下的语法编译:
Integer i = new Integer(100);
虽然此功能很方便,但在程序运行阶段您得了解Java的语义。如下面的程序能编译通过:
Integer i = null;
int j = i;
此程序编译时通过,但运行时会有错误。因为这种写法相当于:
Integer i = null;
int j = i.intValue();
由于i实际上没有参考至任何的对象,所以不能操作intValue()方法,上面程序运行时会出现NullPointerException错误。
自动装箱、拆箱的功能提供了方便性,但隐藏了一细节,所以必须小心。如下列代码1:
public class AutoBoxDemo2
{
public static void main(String[] args)
{
相关文档:
class TestTryFinallyC {
public static void main(String[] args) {
System.out.println(testt());
}
public static int testt() {
int x = 99;
try {
return x;
}finally {
x = 8;
}
}
}
某年某月的某一天, ......
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ReadSetting {
......
/*
ArrayList是最常用的List实现类,内不是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能含有“空隙”,当数组大小不满足时需要增加存储能力,就要将已有数组数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。因 ......
Comparator和Comparable在排序中的应用
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。
一、Comparator
强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort。
接口方法:
......