java中的封装类
2016-01-27 11:06
399 查看
原始数据类型 | 包 装 类 |
boolean(布尔型) | Boolean |
byte(字节型) | Byte |
char(字符型) | Character |
short(短整型) | Short |
int(整型) | Integer |
long(长整型) | Long |
float(浮点型) | Float |
double(双精度浮点型) | Double |
Integer i = new Integer (42);
Long l = new Long (42);
判断 l.equals(i) 或者i.equals(l)为true or false?
经过测试二者都为false,究其原因其实很简单,因为Integer和Long属于基本类型的包装类,这两个类重写了equals()方法,代码如下:
Integer
<pre name="code" class="java">public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
Long
public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }
因此,在调用equals()方法是,首先判断是不是对应的类型,如果是,再比较值是不是一样,否则直接返回false。
总结:
任何编程语言都会涉及比较大小的运算,对于基本类型,Java语言采取与C/C++相同的方法,不用new来创建变量,而是创建一个不是引用的自动变量,这个变量拥有“值”。在进行比较时有两种方法:“==” 和equals();
1,==
基本类型的比较,是比较值大小。
对象的比较 ,是比较对象在内存中的地址。
2,equals()
用来比较两个对象是否相等,如果是自定义的类,在没有重写equals()时,也是比较的内存地址,因为Object类的equals()方法的内部实现是用“==”来实现的。只有重写equals(),按照自己的意愿去定义这个类的相等规则,才能实现真正意义上的比较,另外要记住,在重写equals()时,要重写hashcode()。
相关文章推荐
- SpringMVC之旅-开发到部署过程中遇到的问题整理(不断更新)
- Pascal's Triangle (leetcode java)
- java 注解 详解
- java 里特殊的String
- java使用正则表达式——实例
- 《JAVA与模式》之抽象工厂模式
- java正则表达式基本符号
- Java for Web学习笔记(十五):JSP(5)在JSP中使用Java吗?
- Java中过滤出字母、数字和中文的正则表达式
- [转] java中int,char,string三种类型的相互转换
- javaweb局部刷新-ajax异步请求springMVC显示返回的jsp内容,代替iframe
- spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" />
- Spring整合Quartz任务调度
- 招人:java和c,还有测试
- 在eclipse中查看sources源码和JavaDoc帮助文档
- spring + atomikos解决多数据源事务管理
- Eclipse插件开发2-第一个插件
- Eclipse插件开发1
- Spring MVC +Mybatis + Maven 配置之dataSource配置
- java枚举类型enum详解