java语言,为什么是true true false的结果啊?

class a
{
}

public class Test
{
public static void main(String[] args)
{
int f1 = 1 ;
Integer f2 = new Integer(1);
Integer f3=Integer.valueOf(1);

System.out.println(f2==f1);
System.out.println(f1==f3);
System.out.println(f2==f3);
}
}
最新回答
枕边的泪

2024-11-07 09:15:10

比较的时候注意"=="比较的两边是什么。第一个,第二个比较的都是整形数值,当然相等,所以true。但是第三个句子比较的是两个引用数据,由于两个引用数据指向的数值的存储空间地址并不是一样的,结果当然是不同的,所以是false了,不要认为他们指向的数值一样,就应该是true。
还有一个比较两边相等的equal。建议看一下。
嗝是迷路的屁

2024-11-07 08:40:05

f1是基本类型 f2和f3是引用类型 所以
f1和f2比较时, f2会拆箱和f1比较且比较的是数值
f1和f3和上面的一样
f2和f3比较是比的f2和f3引用类型的引用地址不是比较数值,两个对象的引用地址一般是不会相等的
满栀

2024-11-07 04:11:05

f2是指向对象的引用。可以这样理解f2这个变量里存储的是对象的地址。最后一个结果是false