public static void main(String[] args) {
Long lo = new Long(1);
Integer a = new Integer(1);
int aa = 1;
System.out.println(lo.equals(a)); //false
System.out.println(lo==aa); //true
System.out.println(lo==a); //编译错误
}为什么
System.out.println(lo==aa)
会输出true呢?而
System.out.println(lo.equals(a))
则输出false呢?想听听前辈们的意见
解决方案 »
- 请问
- 谁能说出这个统计方法中,remove(int i)与 remove(Object obj)的区别?
- 关于菜单的一个问题
- 哪有下载java资料的ftp啊
- 如何让html 中的数据以表格形式显示在servlet? 急 ! 在线等!!!
- 如何控制界面上控件的相对大小?
- Exception的问题
- 请教一个classload 的问题。。
- casting在java中是什么意思啊?
- 好消息,本网站的分可以按比例兑换实币
- 关于List<HashMap<String,String>> add和remove的问题
- 【求助】程煦媛都是写得了代码,查得出异常,上得了厅堂下得了厨房,---------------(一个Java计算器)查个异常让我们这些沙弥见识见识
System.out.println(lo.equals(a)):因为在Long类的JDK实现中: boolean equals(Object obj)
{
if(!obj instanceof Long) return false;
}也就是说,只要传入的参数不是一个Long类型,都是返回false。
正解。
再看看生成的class反编译后的代码就清楚了 public static void main(String[] args)
{
Long lo = new Long(1L);
Integer a = new Integer(1);
int aa = 1;
System.out.println(lo.equals(a));
System.out.println(lo.longValue() == aa);
}
谢谢
正解。
再看看生成的class反编译后的代码就清楚了 public static void main(String[] args)
{
Long lo = new Long(1L);
Integer a = new Integer(1);
int aa = 1;
System.out.println(lo.equals(a));
System.out.println(lo.longValue() == aa);
}
谢谢
那这个又是为什么呢? a不是等于1么?