1. // 初始化
    2. String s1 = "Hello World";
    3. System.out.println("s1 is \"" + s1 + "\"");
    4. String s2 = s1;
    5. System.out.println("s2 是对 s1 的另一个引用.");
    6. String s3 = new String(s1);
    7. System.out.println("s3 是 s1 的副本.");
    8. // 等号比较 '==' 比较这两个对象是否是同一个对象。
    9. System.out.println("Compared by '==':");
    10. // true since string is immutable and s1 is binded to "Hello World"
    11. // true 因为字符串是不可变的并且 s1 绑定到“Hello World”
    12. System.out.println("s1 and \"Hello World\": " + (s1 == "Hello World")); // true
    13. // true since s1 and s2 is the reference of the same object
    14. // true 因为 s1 和 s2 是同一个对象的引用
    15. System.out.println("s1 and s2: " + (s1 == s2)); // true
    16. // false since s3 is refered to another new object
    17. // false 因为 s3 引用了另一个新对象
    18. System.out.println("s1 and s3: " + (s1 == s3)); // false
    19. // compare using 'equals' 比较字符串中所包含的内容是否相同
    20. System.out.println("Compared by 'equals':");
    21. System.out.println("s1 and \"Hello World\": " + s1.equals("Hello World"));
    22. System.out.println("s1 and s2: " + s1.equals(s2)); // true
    23. System.out.println("s1 and s3: " + s1.equals(s3)); // true
    24. // compare using 'compareTo' // 字符串与字符对象比较
    25. System.out.println("Compared by 'compareTo':");
    26. System.out.println("s1 and \"Hello World\": " + (s1.compareTo("Hello World") == 0)); // true
    27. System.out.println("s1 and s2: " + (s1.compareTo(s2) == 0)); // true
    28. System.out.println("s1 and s3: " + (s1.compareTo(s3) == 0)); // true
    29. System.err.println("===============");
    30. /**
    31. * 字符串不可变
    32. */
    33. /* String str1 = "Hello World";
    34. str1[5] = ',';
    35. System.out.println(str1);*/
    36. /**
    37. * 针对 Java 中出现的此问题,提供了以下解决方案:
    38. *
    39. * 如果你确实希望你的字符串是可变的,则可以使用 toCharArray 将其转换为字符数组。
    40. * 如果你经常必须连接字符串,最好使用一些其他的数据结构,如 StringBuilder 。
    41. */
    42. String s = "";
    43. int n = 10000;
    44. for (int i = 0; i < n; i++) {
    45. s += "hello";
    46. }
    47. }