和cast的规则一样,不能强制转换的,就不能用==

解决方案 »

  1.   

    Float s 和 Double u是两个不同类的对象,所以是不能用==比较的。
      

  2.   

    en,你的意思是==两边的对象作比较的时候会被cast然后再比较吗?可按照我的理解 ==比较的是两个句柄的指向呀。就是 如果指向一个对象则为ture
    or false .继续困惑中
      

  3.   

    public class Foo{
                
        public static void main(String [] args){
            
           Float s=new Float(0.9F);
           Float t=new Float(0.9F);
           Double u=new Double(0.9);
           Float d = s;
       System.out.println( s==t    );//比较的是两个字符串是不是指向同一个存储空间。
       System.out.println( s==d );//true.
           System.out.println(s.equals(d));//比较的是同一类型的两个字符串的内容。
          //System.out.println( s==u); // canot compile
           System.out.println( t.equals(u));//object isn't same.
          }
       
        }看看是不是对你有所帮助。
      

  4.   

    同意楼上的!
    你println一个对象就可以看到,对象句柄的内容是对象类型加上一个数字,如果是不同类型,它们的句柄不可能相等,所以java会先判断==两边是否是同类型对象!
      

  5.   

    ==对两个指针进行比较,如果指向相同的对向返回true,否则返回false,能比较当然前提是类型一样,只有类型一样才能比较
      

  6.   

    hehe,基本上弄清楚了,==比较同类对象的句柄的指向。谢谢大家。结帐