TestStringIntern.java 1.0 KB

1234567891011121314151617181920212223242526272829
  1. package com.sf.javase.base;
  2. public class TestStringIntern {
  3. public static void main(String[] args) {
  4. String str = new String("hello");
  5. // 这个方法的作用,是先去常量池中查看是否有等于 "hello"的字符串 如果有 返回字符串
  6. // 如果没有 会创建字符串 然后返回字符串的引用地址
  7. str.intern();
  8. // String str1 = new String("hello") + new String(" world");
  9. // str1 = str1.intern();
  10. // String str2 = "hello world";
  11. // System.out.println(str1 == str2);
  12. // str1和str2直接比较时 false不相等
  13. // str1从常量池中取值重新赋值后 true相等
  14. // 常量池中保存的是 堆中字符串的地址
  15. // 相等 但是区别在 常量池中保存的是字符串"hello world"
  16. String str1 = new String("hello") + new String(" world");
  17. String str2 = "hello world";
  18. str1 = str1.intern();
  19. System.out.println(str1 == str2);
  20. // String为什么是不可变的?
  21. }
  22. }