包装类型的数据比较
来源:互联网 发布:json在线处理 编辑:程序博客网 时间:2024/06/05 11:01
基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable接口,也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:
public class Client27 { public static void main(String[] args) { Integer i = new Integer(100); Integer j = new Integer(100); compare(i, j); } public static void compare(Integer i, Integer j) { System.out.println(i == j); System.out.println(i > j); System.out.println(i < j); }}
代码很简单,产生了两个Integer对象,然后比较两个的大小关系,既然包装类型和基本类型是可以自由转换的,那上面的代码是不是就可以打印出两个相等的值呢?让事实说话,运行结果如下:
false false false
竟然是3个false,也就是说两个值之间不相等,也没大小关系,这个也太奇怪了吧。不奇怪,我们来一 一解释:
- i==j:在java中"=="是用来判断两个操作数是否有相等关系的,如果是基本类型则判断值是否相等,如果是对象则判断是否是一个对象的两个引用,也就是地址是否相等,这里很明显是两个对象,两个地址不可能相等。
- i>j 和 i<j:在Java中,">" 和 "<" 用来判断两个数字类型的大小关系,注意只能是数字类型的判断,对于Integer包装类型,是根据其intValue()方法的返回值(也就是其相应的基本类型)进行比较的(其它包装类型是根据相应的value值比较的,如doubleValue,floatValue等),那很显然,两者不肯能有大小关系的。
问题清楚了,修改总是比较容易的,直接使用Integer的实例compareTo方法即可,但是这类问题的产生更应该说是习惯问题,只要是两个对象之间的比较就应该采用相应的方法,而不是通过Java的默认机制来处理,除非你确定对此非常了解。
总结:包装类型的比较,由于包装类是对象,是不一样的值,所以使用包装类的比较方法进行比较
阅读全文
0 0
- 包装类型的数据比较
- Java_语法基础_谨慎包装类型的大小比较
- Java包装类型的大小比较需谨慎
- Java包装类与基本类型进行比较的坑
- 基本类型、包装类型的数据绑定以及坑
- [疯狂Java]面向对象:基本类型的包装器类型、自动装箱/拆箱、包装器类型大小/相等比较
- String 类型的数据比较:
- integer类型数据的比较
- Integer 类型数据的比较
- java equal和==的比较,尤其注意基本类型和基本类型的包装类型的比较
- 基本类型的包装类型
- Java 包装类的比较
- 提高你的Java代码质量吧:谨慎包装类型的比较
- 深入理解Java原始数据类型和包装类关于==和equals的比较
- java包装类型 “==”的比较(Integer,long等)
- 包装类型、装箱拆箱、基本类型速度比较
- Java的简单类型包装
- Java的包装器类型
- Metasploit 整理笔记
- 带有进度条文件上传(UploadFile+AJAX+监听器)
- poj 3984 迷宫问题
- 运算放大器常见的指标
- LeetCode-Counting Bits
- 包装类型的数据比较
- Javascript 设计模式
- Java跨平台特性
- Solidworks编辑零件卡死解决方案
- 正式培训的第一天
- 【Scikit-Learn 中文文档】内核近似
- WingIDE6破解
- linux 内核 下 读写 文件
- java compiler level does not match the version of the installed java project facet