您的位置:首页 > 编程语言 > Java开发

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()。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: