JAVA题 这题为什么前面是TRUE后面是FALSE~~求指教~
publicclassKungFu{2.publicstaticvoidmain(String[]args){3.Integerx=400;4.Integery=x;5....
public class KungFu{
2. public static void main(String[ ] args){
3. Integer x = 400;
4. Integer y = x;
5. x++;
6. StringBuilder sb1 = new StringBuilder("123");
7. StringBuilder sb2 = sb1;
8. sb1.append("5");
9. System.out.println((x == y) + " " + (sb1 == sb2));
10. }
11. }
说错了 前面是FALSE 后面是TRUE~~ 展开
2. public static void main(String[ ] args){
3. Integer x = 400;
4. Integer y = x;
5. x++;
6. StringBuilder sb1 = new StringBuilder("123");
7. StringBuilder sb2 = sb1;
8. sb1.append("5");
9. System.out.println((x == y) + " " + (sb1 == sb2));
10. }
11. }
说错了 前面是FALSE 后面是TRUE~~ 展开
展开全部
首先它们一个是基本数据类型一个是引用数据类型。“==”比较的是对象指向的数据地址。其次,先有Integer y = x;而之后x++;所以此时x=401,对于基本数据类型来说就相当于开辟了一个内存为401的空间来进行存储;sb1 == sb2这两个对象其实比较的是其指向的内存地址是否一样。如果你把它改为sb1.equals(sb2) 那么就是false,这是引用类型的特点,这时它们在内存的地址因为StringBuilder sb2 = sb1;所以其指向保持了一致,所以你用“==”来比较时就会是true,而如果用equals来比较内容时就成了false了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询