你的位置:首页 > 软件开发 > Java > Java语言暗箱操作之自动装箱与拆箱

Java语言暗箱操作之自动装箱与拆箱

发布时间:2015-08-29 17:00:04
我以前在写Android项目的时候,估计写得最多最熟练的几句话就是:  List<Integer> list = new ArrayList<Integer>();list.add(1); //把一个整数加入到集合中int i = list.get(0) ...

  我以前在写Android项目的时候,估计写得最多最熟练的几句话就是:

  

List<Integer> list = new ArrayList<Integer>();list.add(1);  //把一个整数加入到集合中int i = list.get(0);  //从集合中取出元素
同样地,int i = list.get(0),取出list中索引为0的元素,也应该是个Integer,为什么接收的变量就是个int呢?这是一个多么明显的类型不匹配错误啊!以前,我确实听说过“包装类”这个概念,但是忽视了它,因为我一直觉得Integer,Float这些东西,说难听点就是摆出来装装逼的,只是因为List不接受int,float类型,迫不得已发明了Integer,Float,实际并没有卵用。最近看了《Effective Java》里面的一节,名字叫“Prefer primitive types to boxed primitives”。里面罗列了很多原始类型和包装类型混用的例子,搞得我晕头转向的。下面是其中一段代码:下面正式引出本文的话题:AutoBoxing and Unboxing(自动装箱&自动拆箱)看一个最简单的例子:自动装箱一般在两种情况下会发生(以int和Integer为例):这样一来,自动拆箱的过程就顺理成章了。看以下代码:我们再来分析一下那段超级低效的代码吧,经过自动拆装箱转换之后应该是这样子的:
Long sum = Long.valueOf(0L);for (long i = 0; i < Integer.MAX_VALUE; i++) {   sum = Long.valueOf(sum.longValue() + i);  //低效所在}System.out.println(sum.toString());

原标题:Java语言暗箱操作之自动装箱与拆箱

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。