主题:求哥哥姐姐帮我做这个题,并说明为什么谢谢!!!!
kuwendi
[专家分:0] 发布于 2007-03-24 17:23:00
26. Give following class:
class AClass{
private long val;
public AClass(long v){val=v;}
public static void main(String args[]){
AClass x=new AClass(10L);
AClass y=new AClass(10L);
AClass z=y;
long a=10L;
int b=10;
}
}
Which expression result is true?
A. a==b;
B. a==x;
C. y==z;
D. x==y;
E. a==10.0;
回复列表 (共9个回复)
板凳
ppfans [专家分:210] 发布于 2007-03-24 18:01:00
A C dui
基本数据类型比值
非基本数据类型比地址
3 楼
quanzhan [专家分:870] 发布于 2007-03-25 00:41:00
a==b
y==z
a==10.0
4 楼
quanzhan [专家分:870] 发布于 2007-03-25 00:42:00
可以输出实验一下嘛。
if(a==b)
System.out.println("a==b");
// if(a==x)
// System.out.println("a==x");
if(y==z)
System.out.println("y==z");
// if(a==z)
// System.out.println("a==z");
if(a==10.0)
System.out.println("a==10.0");
5 楼
liuwei424 [专家分:30] 发布于 2007-03-25 11:23:00
楼上的说法是正确的,基本类型比值,非基本类型比地址,因为它们是引用结构
6 楼
hy1204 [专家分:140] 发布于 2007-03-26 12:42:00
c,e 对,原因同上, 但是a我不知道是否涉及精度问题, 应该正确,最好写出来试一下.
因为比如0.3*3,计算得出的结果是0.899999999999(9个数可能不对),而不是0.9
7 楼
feishao45 [专家分:1530] 发布于 2007-03-26 17:52:00
一般基础数据类型比值,对象实例比地址(除非重新定义了equals方法):
System.out.println(a==b);//true 值相等
//System.out.println(a==x);//程序错误
System.out.println(y==z);//true地址相同代表同一个实例
System.out.println(x==y);//false 地址不相同代表不是同一个实例
System.out.println(a==10.0);//true 值相等,a=10也正确,a=10.00也正确
8 楼
yuan_2004 [专家分:10] 发布于 2008-02-08 21:16:00
a和e
因为a和e都是基本数据类型比较.
其它的是比较地址.
9 楼
wsfx765 [专家分:0] 发布于 2008-10-01 15:51:00
没错,这个基本类型相互比较的是变量里面的数值,引用类型相互比较时候比较的是引用类型的地址。所以Z=X是把x的引用地址赋给了z,相当于x和z同时指向同一个对象。不知道分析的对不对。
我来回复