给大家出个题a=b, b=c, a=c??用代码来看吧: int i = 123;
Integer a = new Integer(i);
int b = i;
Integer c = new Integer(i);
System.out.println(a == b);
System.out.println(b == c);
System.out.println(a == c);
好吧,看谁能给出正确答案!
Integer a = new Integer(i);
int b = i;
Integer c = new Integer(i);
System.out.println(a == b);
System.out.println(b == c);
System.out.println(a == c);
好吧,看谁能给出正确答案!
true
false
貌似是:《java解惑》里的东西
T //同上
f // a和c是两个对象在== ,hashcode值肯定不一样,应该重写equals 方法后 比较
Integer a = new Integer(i);//将基本数据类型转换成类,这样将基本数据类型转换成类就叫做包装类。 int类型的包装类为Integer , 就是new出了一个新的对象。
int b = i;
Integer c = new Integer(i);
//同上。。
System.out.println(a == b); //这种判断语句不用在解释了吧
System.out.println(b == c);
System.out.println(a == c);
答案:true
true
false
true
false
我想说的,都让别人说了...
b == c也是一样。
a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样
3 引用比较
so
T,T,F
其他的是包装器类和值比较,楼上解释的清楚了
b == c也是一样。
a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样这个解释很好理解!
true
false//分析:
//首先i,a,b,c的值都为123.
Integer a = new Integer(i);//a是i的封装类,和基本数据类型i比较时,a拆箱成int类型,比较的是值。所以a和i比较为true.
System.out.println(a == c);//当两个Integer类型比较的时候,这时候比较的就不是值了,而是值的引用,两者的hashCode()不一样,要比较时必须重写toString()方法:
System.out.println(a.toString().equals(c.toString()));//true
http://blog.csdn.net/crystalangle/archive/2010/06/02/5642166.aspx
true
false
前两个相当于是基本数据类型的比较
最后一个是对象比较
他比较的只是int类型的值,而不是对象或引用,也需要用equals方法来比较吗?
t
t
f
==是比较两个对象的地址,equals比较两个对象的值
int i = 123;
Integer a = new Integer(i);
int b = i;
Integer c = new Integer(i);
System.out.println(a == b);
System.out.println(b == c);
System.out.println(a == c);
// part 2
int i2 = 127;
Integer a2 = 127;
int b2 = i;
Integer c2 = 127;
System.out.println(a2 == b2);
System.out.println(b2 == c2);
System.out.println(a2 == c2); // part 3
int i3 = 128;
Integer a3 = 128;
int b3 = i;
Integer c3 = 128;
System.out.println(a3 == b3);
System.out.println(b3 == c3);
System.out.println(a3 == c3);
前面的朋友们,对照下这个补充内容,然后用你们的解释套一下,看看结果又如何
-128~127之间,会在内存中提供重用,所以才会出现上述程序中数值为127时的两个Integer是相等的,128时不相等
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
前边2个不用说了,最后一个只要在 -128 ~ 127 的范围内也是True
b == c也是一样。
a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样
T
F a,c 对象地址不同 所以是错的其余的都是比较值
Integer a = new Integer(i);
int b = i;
Integer c = new Integer(i);
System.out.println(a +"**" + b + "***" + c);
System.out.println(a == b);
System.out.println(b == c);
System.out.println(a == c);运行结果
123**123***123
true
true
false
通俗点说都是new出来的 哈哈
true :同一个值。
false :两个数引用的地址相同而已。
true
false
这个貌似不怎么难吗,直接根据参数就可以判断吗
Integer c = new Integer(i);a和c引用的是不一样的对象
true
true
false
b = c
a = c true
我们都知道把所有的数位都加起来,如果结果能被3整除,那么这个数必然能被3整除,可究竟有多少人认真的去思考过,为什么这样就可以?这不是公理,不需要证明就成立!!那些说月经,说无聊的人,你们反思下,你们的月经和无聊来了这么久,你可曾知道点什么,还是看到贴子就大喊。=======依旧华丽的分割线========还是那句话,虽然我看到了有价值的答案,但离我想要的结果还相距甚远我用一个问题提醒下你们,jdk的bin目录下有很多的可执行文件,你们可知道他们的用处?
例如jdk1.6的bin目录下有这些个可执行文件
appletviewer.exe
apt.exe
extcheck.exe
HtmlConverter.exe
idlj.exe
jar.exe
jarsigner.exe
java-rmi.exe
java.exe
javac.exe
javadoc.exe
javah.exe
javap.exe
javaw.exe
javaws.exe
jconsole.exe
jdb.exe
jhat.exe
jinfo.exe
jmap.exe
jps.exe
jrunscript.exe
jstack.exe
jstat.exe
jstatd.exe
jvisualvm.exe
keytool.exe
kinit.exe
klist.exe
ktab.exe
native2ascii.exe
orbd.exe
pack200.exe
packager.exe
policytool.exe
rmic.exe
rmid.exe
rmiregistry.exe
schemagen.exe
serialver.exe
servertool.exe
tnameserv.exe
unpack200.exe
wsgen.exe
wsimport.exe答案就在这里面找