当前位置: 技术问答>java相关
比较问题一道,关于 ==
来源: 互联网 发布时间:2015-04-20
本文导语: 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); System.out.println( s==t ); System.out.println(s.equals(t)); ...
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);
System.out.println( s==t );
System.out.println(s.equals(t));
System.out.println( s==u); // canot compile
System.out.println( t.equals(u));
}
}
d:Program FilesXinox SoftwareJCreator ProMyProjectsFoo.java:12: incomparable types: java.lang.Float and java.lang.Double
我本来以为 ==两边可以随便放东西的。但是现在看来并非如此。为什么放两个对象会报错呢?
public static void main(String [] args){
Float s=new Float(0.9F);
Float t=new Float(0.9F);
Double u=new Double(0.9);
System.out.println( s==t );
System.out.println(s.equals(t));
System.out.println( s==u); // canot compile
System.out.println( t.equals(u));
}
}
d:Program FilesXinox SoftwareJCreator ProMyProjectsFoo.java:12: incomparable types: java.lang.Float and java.lang.Double
我本来以为 ==两边可以随便放东西的。但是现在看来并非如此。为什么放两个对象会报错呢?
|
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.
}
}
看看是不是对你有所帮助。
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.
}
}
看看是不是对你有所帮助。
|
==比较的的确是两个句柄是否相同,但也要两个句柄是同类型的才可以比
|
同意楼上的!
你println一个对象就可以看到,对象句柄的内容是对象类型加上一个数字,如果是不同类型,它们的句柄不可能相等,所以java会先判断==两边是否是同类型对象!
你println一个对象就可以看到,对象句柄的内容是对象类型加上一个数字,如果是不同类型,它们的句柄不可能相等,所以java会先判断==两边是否是同类型对象!
|
和cast的规则一样,不能强制转换的,就不能用==
|
Float s 和 Double u是两个不同类的对象,所以是不能用==比较的。
|
句柄也是有类型的,否则岂不是大乱?
|
==对两个指针进行比较,如果指向相同的对向返回true,否则返回false,能比较当然前提是类型一样,只有类型一样才能比较