String的创建模式
Posted jinsheng1027
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象不可变的几个原因。
1.出于安全考虑若String对象可以被随意修改,那么就有可能被恶意修改。
2.确保hash值不会变化,确保唯一性,保障hashMap等功能的正常实现
3.可以实现字符串常量池
以上是关于String的创建模式的主要内容,如果未能解决你的问题,请参考以下文章