下面一段代码:
Float i11 = 333f;
Float i22 = 333f;
System.out.println(i11 == i22);
输出结果是FALSE。
原因:在Java中,当比较两个Float对象时,使用 == 比较的是它们的引用地址,而不是它们的值。即使两个Float对象的值相同,它们的引用地址也可能不同,因此使用 == 比较会返回false。
在给Float对象赋值时,如果赋的值在-128到127的范围内,Java会使用缓存机制,即返回缓存中已有的对象,而不是每次都创建新的对象。但是,333不在这个范围内,所以每次赋值都会创建一个新的Float对象,因此i11和i22引用的是不同的对象,使用"=="比较会返回false。
如果要比较两个Float对象的值是否相等,应该使用equals()方法。