public class Testeguals {
public static void main(Stringl args) throws IOException{
String[] a=new String[5];
boolean b1,b2,b3;
String s1="Hello";
String s2="Hello";
String s3=new String("Hello");
b1=(s1s2);
b2=(s1s3);
b3=s1.equals(s3);
System.outprintln(s1s2);
System.outprintln(s1s3);
System.out.println(s1.equals(s3));
程序运行的结果:
(1)_____
(2)____________
(3)_____________
首先,你的代码中存在一些错误,我将先对其进行修正,然后再解释其运行结果。
修正后的代码如下:
java
public class TestEquals {
public static void main(String[] args) throws IOException {
String[] a = new String[5];
boolean b1, b2, b3;
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
b1 = (s1.equals(s2));
b2 = (s1.equals(s3));
b3 = s1.equals(s3);
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
}
}
现在,我们来看看代码的输出结果:
s1.equals(s2):由于s1和s2的内容都是"Hello",所以它们是相等的。因此,s1.equals(s2)的结果为true,对应的布尔值b1也为true。
s1.equals(s3):这里,s1的内容是"Hello",而s3是通过new String("Hello")创建的新字符串。尽管它们的内容相同,但它们在内存中的地址不同。因此,s1.equals(s3)的结果为false,对应的布尔值b2也为false。
s3.equals(s1):这与上面一个比较是相反的。因为s3和s1在内存中的地址不同(尽管它们的内容相同),所以s3.equals(s1)的结果为false,对应的布尔值b3也为false。
因此,程序的输出结果为:
css
true
false
false
true
false
false