概述
原始数据类型 | 包 装 类 |
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()。
最后
以上就是斯文豆芽为你收集整理的java中的封装类的全部内容,希望文章能够帮你解决java中的封装类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复