栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java—String类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java—String类

目录

1.创建字符串的四种方式

2.字符串比较相等

3.关于字符串的常量问题

3.1手工入池方法

4.字符串的不可变性

5.如何修改字符串的内容

5.1更换使用StringBuilder或这StringBuffer类----已经和String不是一个类了!

5.1.1字符串反转操作,sb提供的revese();

5.1.2删除指定范围的数据 (左闭右开)

5.1.3插入操作

5.2在运行时通过反射破坏value数组的封装(不推荐!)


1.创建字符串的四种方式

(方式一和方式四较为常用!)

注意事项:“hello”这样的字符串字面量常量,类型也是String。

                 

String也是引用类型 ,String str = "hello world";字符串字面量,也是字符串对象

String str2 = str;这两行代码内存布局如下:

再来看这个例子:

2.字符串比较相等

所有引用数据类型在比较是否相等时,使用equals方法比较,JDK常用类,都已经覆写了equals方法,可以直接使用。

若对引用数据类型使用“==”比较的仍然是数值(地址是否相等)

 

 

 

 

3.关于字符串的常量问题

先来看这两个例子:

 

当使用直接赋值法产生字符串对象时,JVM会维护一个字符串的常量池,若该对象在堆中还不存在,那么就会产生一个新的字符串对象加入到字符串的常量池中。

当继续使用直接赋值法产生字符串对象时,JVM发现该引用指向的内容在常量池中已经存在了,则此时不再新建字符串对象,而是复用已有对象。

 

 而所谓的“池”:

3.1手工入池方法

String类提供的intern方法

1.若当前常量池中已经存在了该对象,则不再产生新的对象,返回常量池中的String对象。(调用intern方法会将当前字符串引用指向的对象保存到字符串常量池中)

2.若当前常量池中不存在该对象,则将该对象入池,返回入池后的地址。

 

 

4.字符串的不可变性

所谓的字符串不可变指的是字符串对象的内容不能变,而不是字符串引用不能变。

为何字符串的对象无法修改内容呢?

字符串其实就是一个字符数组->char[],字符串保存的值实际上在数组中保存。

5.如何修改字符串的内容

 

5.1更换使用StringBuilder或这StringBuffer类----已经和String不是一个类了!

(StringBuffer和StringBuilder用法完全一样,线程安全,性能较差)

5.1.1字符串反转操作,sb提供的revese();

5.1.2删除指定范围的数据 (左闭右开)

 

5.1.3插入操作

 

 

注意:

5.2在运行时通过反射破坏value数组的封装(不推荐!)

 

注意:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号