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的创建模式的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试使用请求创建新的购物车模式

如何为名称/值结构创建 JSON 模式?

GOF设计模式——Singleton模式

使用建造者模式创建模拟数据

使用 Arrow 创建具有错误处理的对象构建器 - 模式匹配多个 Either

《Android源代码设计模式解析与实战》读书笔记(二十二)