回 帖 发 新 帖 刷新版面

主题:求哥哥姐姐帮我做这个题,并说明为什么谢谢!!!!

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个回复)

沙发

选最后一个

板凳


A C dui
基本数据类型比值
非基本数据类型比地址

3 楼

a==b
y==z
a==10.0

4 楼

可以输出实验一下嘛。
        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 楼

楼上的说法是正确的,基本类型比值,非基本类型比地址,因为它们是引用结构

6 楼

c,e 对,原因同上, 但是a我不知道是否涉及精度问题, 应该正确,最好写出来试一下.
因为比如0.3*3,计算得出的结果是0.899999999999(9个数可能不对),而不是0.9

7 楼

一般基础数据类型比值,对象实例比地址(除非重新定义了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 楼

a和e
因为a和e都是基本数据类型比较.
其它的是比较地址.

9 楼

没错,这个基本类型相互比较的是变量里面的数值,引用类型相互比较时候比较的是引用类型的地址。所以Z=X是把x的引用地址赋给了z,相当于x和z同时指向同一个对象。不知道分析的对不对。

我来回复

您尚未登录,请登录后再回复。点此登录或注册