String类的问题


图中的s1和s的区别是啥啊?:astonished:

讨论数量: 1

s是一个类成员变量,类型为String,它在contextLoads方法中被重新赋值为"java",s1则是在contextLoads1方法中调用contextLoads方法的返回值,类型也是String。

在contextLoads1方法中,System.out.println(s1==s)输出的是false,这是因为==比较的是两个对象的引用地址,而不是它们的值。虽然s1和s的值都是"java",但它们是两个不同的对象,所以它们的引用地址不同。而System.out.println(s1.equals(s))输出的是true,这是因为equals比较的是两个对象的值,而不是它们的引用地址,所以如果两个String对象的值相等,那么它们的equals方法返回true。

最后,System.out.println(this.s)输出的是"Ly",这是因为this.s是类成员变量s的值,它在contextLoads方法中被重新赋值为"java",但在contextLoads1方法中并没有改变,所以输出的是原来的值"Ly"。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!