public class Test { 2. public static void main(Stringl args){ 3 string s1="ab12" 4. string s2="ab"+"12" 5. String s3="ab12"; 6. String s4=new String("ab")+"12", 7 s3=s3+"c"; 8. System.out.println(s1==s2) 9. system.out println(s2==s3) 10. System.out.println(s1==s4) 9. system.out println(s3==s4)
时间: 2023-12-05 11:18:32 浏览: 76
C#中static void Main(string[] args) 参数示例详解
这段代码有一些语法错误,应该是这样的:
```
public class Test {
public static void main(String[] args) {
String s1 = "ab12";
String s2 = "ab" + "12";
String s3 = "ab12";
String s4 = new String("ab") + "12";
s3 = s3 + "c";
System.out.println(s1 == s2);
System.out.println(s2 == s3);
System.out.println(s1 == s4);
System.out.println(s3 == s4);
}
}
```
这段代码主要是对字符串的比较和连接进行测试。其中 `s1`、`s2`、`s3`、`s4` 都表示字符串,它们的值分别为 `"ab12"`、`"ab12"`、`"ab12c"`、`"ab12"`。这里有一些需要注意的点:
1. 在 Java 中,字符串的比较不能使用 `==`,应该使用 `equals` 方法。因为 `==` 比较的是对象的引用,而不是对象的值。所以,`s1 == s2` 和 `s1 == s4` 的结果都是 false,因为 `s2` 和 `s4` 是通过 new 关键字创建的新的 String 对象,而 `s1` 是直接赋值的字符串常量。而 `s2 == s3` 和 `s3 == s4` 的结果都是 false,因为 `s3` 和 `s4` 是通过字符串连接得到的新的字符串对象,而不是同一个对象。
2. 字符串是不可变的,即一旦创建了一个字符串对象,它的值就不能被改变。所以,对字符串进行连接操作时,实际上是创建了一个新的字符串对象。
3. `new String("ab")` 和 `"ab"` 都是表示字符串 `"ab"` 的方式,但是它们的区别在于,前者会创建一个新的 String 对象,而后者会使用字符串常量池中已经存在的对象。一般来说,应该尽量使用字符串常量,而不是通过 new 关键字创建新的对象。
阅读全文