有如下程序代码, 程序运行的结果是( )。 String s1 = "sdut"; String s2 = "I love " + s1; String s3 = "I love " + s1; System.out.print(s2 == s3); Sytem.out.println(" "+s2.equals(s3));
时间: 2024-04-03 11:32:04 浏览: 102
程序运行的结果是:
false true
解释如下:
第一行代码定义了一个字符串变量s1,它的值为"sdut"。
第二行代码定义了一个字符串变量s2,它的值为"I love " + s1,即"I love sdut"。注意,这里使用了字符串拼接操作符+。
第三行代码定义了一个字符串变量s3,它的值同样为"I love " + s1,即"I love sdut"。
第四行代码使用==运算符比较s2和s3的引用是否相等,结果为false。这是因为s2和s3虽然包含的字符序列相同,但是它们是两个不同的对象,即它们的引用不同。
第五行代码使用equals方法比较s2和s3的字符序列是否相等,结果为true。这是因为equals方法比较的是对象的值,即它们包含的字符序列是否相同。在这里,s2和s3的字符序列相同,因此equals方法返回true。
最后,System.out.println方法将结果输出到控制台,其输出结果为"false true"。
相关问题
String s1 = "sdut"; String s2 = "I love " + s1; String s3 = "I love " + s1; System.out.print(s2 == s3); Sytem.out.println(" "+s2.equals(s3));
结果是false true。虽然s2和s3的值相同,但是它们是通过不同的方式创建的。s2是通过字符串连接运算符+创建的,而s3是通过相同的字符串连接运算符+创建的。在Java中,对于创建字符串,通过+运算符创建的字符串会在内存中创建新的对象,所以s2和s3引用的是不同的对象,它们的地址不同。而s2.equals(s3)则会比较两个字符串的内容是否相同,返回true。
String str1 = "sdut@sdut.edu.cn"; String str2 = str1.toLowerCase();System.out.println(str2); System.out.println(str1); System.out.println(str1 == str2);
这段代码输出的结果是:
sdut@sdut.edu.cn
sdut@sdut.edu.cn
false
原因是 str1 和 str2 是两个不同的对象,虽然它们的值相同,但它们的地址不同。str1 是一个字符串常量,而 str2 是通过调用 toLowerCase() 方法生成的新字符串对象。因此,str1 和 str2 的地址不同,所以 str1 == str2 的结果为 false。
阅读全文