问题主题:类型转换
书页号码:37页
题目:
讨论点:答案不是D,应该是B
理由:看下面在编译器输入的结果
知识扩展:装箱与拆箱, == 与 equals 区别
之前也老是听说什么装箱、拆箱之类的(装你妹的箱,JAVA概念就是多),之前不太留意,后来查了一下资料、所谓的装箱与拆箱主要是因为JAVA里面每一种基础类型都有相对应的对象类型,你比如基础类型 int 对应的是Integer,long 对应 Long,double 对应 Double 等等,为什么每种基础类型都有相对应的对象类型呢?我想主要是为了操作方便,既然说是对象类型,那当然里面就会有各种各样的方法供使用,比如你想在基础类型之间做相互转化你就可以先将基础类型变成对应对象类型,然后再通过这个对象类型提供的方法进行转化,如下面的例子:
那到底什么是装箱和拆箱呢,装箱就是从基础类型变成对应的对象类型后编译器会执行装箱操作,反之则是拆箱,就是这么easy。下面一篇博客是专门介绍JAVA装箱与拆箱的与大家分享一下
http://www.cnblogs.com/dolphin0520/p/3780005.html
== 与 equals 我几乎每天都在用,在此之前我也没有太在意这里面的区别,后来查了一下资料,== 会根据场合来决定到底比较的是什么,是比较值还是比较对象内存地址呢。而equals 如果你看了这个equals的实现方法,你会发现它首先比较的是对象内存地址,假如内存地址相等就立马返回,如果内存地址不相等然后就比较实体,实体相等就返回,如果实体不相等最后才比较值。关于这一块我得到的结论是如果是比较两个基础类型的对象类型时最好用equals,原因是因为会出现如下现象:
好了就写到这里了,我要一个人去吃饭了,然后去洗个头搞搞发型,回来练练声乐之类的。有说得不对的地方忘指正,谢谢了。