请问这个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,为什么不等?

还有

f1和f2应该是一回事,只不过把值类型(F1)变成了引用类型(F2).

S1和S2虽然内容是一样的,但是是两个不同的对象,而你且==比较的是他们的引用,即是不是同一个对象.

致于最后一个,我觉得是因为它们的内存空间容量不同,导致比较的结果不等.

String str1="str";
String str2="str";

str1==str2;//false
str1.equals(str2);//ture

这个是和C++的处理方式不相同的地方之一。

字符串是引用数据类型 所以不能用==来比 要用equals来比