package chape8;
/**
* 8--49
* 基本数据类型优于装箱基本类型
* java1.5发行中了自动装箱和拆箱;但是这些特性没有完全抹去基本数据类型和引用数据类型的区别
* 基本数据类型和装箱数据类型的区别:
* 第一:基本类型只有值。而装箱基本类型则具有与他们的值不同的同一性;
* 第二:基本类型只有功能完备的值;而每个装箱基本类型处理它对应的基本类型的所有功能外,还有非功能值 null
* 第三:基本类型比装箱类型节省时间和空间;
*
* @author lee
*
*/
public class Chape49 {
static Integer i ;
/**
* 我们看一个方法;
*/
public static int compare (Integer one , Integer two)
{
return one<two?-1:(one==two?0:1);
}
public static void main(String[] args) {
System.out.println(compare(new Integer(42),new Integer(42)));
/**
* 调用这个方法:发现结果 为1
* 那就是说one > two
* 怎么可能?
* 其实我们都明白 两个integer比较 是一个错误 解决方法就是转换为int类型
* 结论一:在对装箱类型运行==操作几乎总是错误的
*
*/
/**
* 再看一个 这里故意将i的声明放在了main方法外部;
* 你认为运行结果是什么?输出wrong?
* 也许你看出来了 他会报空指针异常
*
*/
if(i==8)
{
System.out.println("worng");
}
/**
* 其实这个谁都能看出来
* 结论2:当在一个操作中混用基本类型和装箱基本类型时。装箱基本类型就会自动拆箱;
* 解决方法就是用int来比较
*/
/**
* 总之:当可以选择的时候,基本类型要优先于装箱类型,基本类型更加简单和快速;如果必须使用装箱的基本类型,要小心;自动装箱
* 减少了使用装箱的繁琐 但也带来了风险;当程序使用==操作符比较两个装箱基本类型的时候,几乎肯定不是你要的结果;
* 当涉及到混合类型计算时,他会执行拆箱。当拆箱时 会有空指针异常;最后 当程序装箱了基本类型时,会导致高开销和不必要的对象
* 创建;
*/
}
}
分享到:
相关推荐
如果这些假设是错误的,生成的程序可能缺少足够的同步(详见 78 条)或过度的同步(详见 79 条)。无条件线程安全 — 该类的实例是可变的,但是该类具有足够的内
Effective Java Effective Java Effective Java
Effective Objective-C是本学习Objective-C的好书,没有见pdf版,亚马逊上的这儿本书的价格不菲。让我们来看看书里的内容和完整的学习笔记吧。
effective-java-3rd-chinese前51条:文章翻译来源地址:about this repository本来以为只是个直接搬运的活,实际上不是。主要工作如下:改进排版,原有博文排版不太优秀,根据markdown 排版指北重新排版。内容修改,...
Effective-Java读书笔记,别人分享的
effective-java-3rd-chinese 前51条:文章翻译来源地址: 现在全部章节已经更新完成 :提供更好的在线阅读版本 : 提供更快的访问速度 写在最前面 本 repo 从来没有授权过任何公众号进行发布转载,所有公众号的引流...
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
effective-java.pdf
Effective Objective-C 2.0.pdf
Effective Java读书笔记.pdf
这是对Effective-Robotics-Programming-with-ROS这本书的中文学习笔记
Effective Objective-C 2.0 完整版,全目录
Effective Objective-C 2.0(中文版&英文版)和Obj-C高级编程(中文版)
基于Effective Java第二版的读书笔记,可以帮助你更好的阅读这边Java圣经,更快的理解其思想
Effective Objective-C 2.0 epub版, 排班较好, 非常适合在kindle上阅读. 教我们如何编写高质量的iOS代码.
effective-java 配套代码
effective-go-zh-en-gitbooke