引号创建与new String 区别

  1. String str1 = “aaa” 会在字符串池中查询,找到就返回该引用,找不到创建str 后返回引用
  2. new String() 是在堆中开辟,不会到字符串池中查询

    String不可变的好处

  3. 由于String是不可变类,所以在多线程中使用是安全的,我们不需要做任何其他同步操作。

  4. String是不可变的,它的值也不能被改变,所以用来存储数据密码很安全。
  5. 因为java字符串是不可变的,可以在java运行时节省大量java堆空间。因为不同的字符串变量可以引用池中的相同的字符串。如果字符串是可变得话,任何一个变量的值改变,就会反射到其他变量,那字符串池也就没有任何意义了