请问这个java问题怎么解决?很基础的问题
来源:百度知道 编辑:UC知道 时间:2024/05/28 02:36:17
public static void main(String[] args) {
float f1=4.2f;
Float f2 = new Float(4.2);
Double d1 = new Double(4.2);
String s1 = "str";
String s2 = new String("str");
System.out.println(f1==f2);
System.out.println(s1==s2);
System.out.println(f2.equals(d1));
}
打印结果是:true
false
false
为什么第一个是true?而第二个却是false?第三个一个是浮点数,一个是double,为什么不等?
还有
float f1=4.2f;
Float f2 = new Float(4.2);
Double d1 = new Double(4.2);
String s1 = "str";
String s2 = new String("str");
System.out.println(f1==f2);
System.out.println(s1==s2);
System.out.println(f2.equals(d1));
}
打印结果是:true
false
false
为什么第一个是true?而第二个却是false?第三个一个是浮点数,一个是double,为什么不等?
还有
f1和f2应该是一回事,只不过把值类型(F1)变成了引用类型(F2).
S1和S2虽然内容是一样的,但是是两个不同的对象,而你且==比较的是他们的引用,即是不是同一个对象.
致于最后一个,我觉得是因为它们的内存空间容量不同,导致比较的结果不等.
String str1="str";
String str2="str";
str1==str2;//false
str1.equals(str2);//ture
这个是和C++的处理方式不相同的地方之一。
字符串是引用数据类型 所以不能用==来比 要用equals来比