String的创建模式

一点基础,这位博主写得很好:

https://www.cnblogs.com/jamaler/p/11576754.html

简要概括一下:

1.创建方式:

String str1 ="Hello World";

String str2 = new String("Hello World");

str1 == str2 ????

并不等于,创建str1时,JVM会查找常量池中是否有Hello World对象,若没有则创建并返回引用。若存在,则直接返回引用。

str2 是在编译时,在常量池中创建Hello World变量,new的使用使用常量池中引用,在堆中创建地址。。str2指向的是堆地址。

2.String对象的不可变性

1.String的类被final修饰,因此不可以被继承;

2.用来被存储字符床的value[]被final修饰,因此,String对象一旦被初始化,就不能被修改。

 提示一下,String不可变指的是

String对象不可变的几个原因。

1.出于安全考虑若String对象可以被随意修改,那么就有可能被恶意修改。

2.确保hash值不会变化,确保唯一性,保障hashMap等功能的正常实现

3.可以实现字符串常量池

原文地址:https://www.cnblogs.com/jinsheng1027/p/11577785.html