请教大家一个问题,现在我想让两个不同类型的变量进行比较,short和int类型用equals方法,据说equals方法比较的是内容那我这句话为什么返回false呢?new Integer(1).equals(new Short((short)1));
解决方案 »
- 学习GIS的话,常用的编程语言是哪种呢?
- 如何截取字符串中可能出现的数字(具体是否出现不定)并删除之?
- 一道面试题,大家来回答看看啊
- 有关tomcat的启动问题
- java中怎么获得一个本地空闲的端口
- 编译时提示:包不存在! 快帮忙看一下吧,做不完,年就过不好了,要提前来加班做呀............................
- ObjectInputStream.readInt()函数是读取32位的Int型吗?如何转换到C#代码?
- 用java开发一个ACDSEE这样的看图软件,实现方便吗?
- java程序员们,你们用java主要用来做什么(在线等待!!来则送分!!!!!!)
- 怎么转换进制(50分)求助
- 一个fileinputstream奇怪的问题
- 应把super看作对“当前对象”的引用,而不是引用超类的实例。
比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。 并且是一个与该对象包含相同 int 值的 Integer 对象时.
必须是Integer
该例子中比较的是地址,由于都 'new' 了新的内存空间,故返回false.
Integer早就重写了equals方法,跟地址没关系
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
Integer的源码很清楚地说明问题了,只有obj instanceof Integer首先为true,才可能返回真。
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
Integer的源码很清楚地说明问题了,equals的参数首先要是Integer的实例,否则不可能返回true。
那里定义的OBJ之间的比较都是要先类型要一样了才比较数值的
(-_0)!学习ING