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

Java中String、StringBuilder、StringBuffer类详解

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

Java中String、StringBuilder、StringBuffer类详解

一、String类

​ String类是java.lang包下的一个子类,使用其方法时无需导包。Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。

​ “字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向。”例如先定义String str1=“a”;再定义String str1=“b”;此时只是str1指向的地址发生了改变,而"a"仍然在原来的地址,只是再也不能使用它了。

因为String对象是不可变的,它们可以被共享。这段话的意思是如果在程序有完全相同的字符串,则这些字符串在同一个内存中,这些字符串的名称都指向这块内存。如下图所示。

对 String 变量进行修改的时候其实都等同于生成了一个新的 String 对象。源码中,使用final关键字修饰了String类和value变量,所以,String类是不可继承的。String所表示的字符串,底层是使用一个字符数组来保存的,也就是value这个变量,此时这个变量也使用final修饰,表示String的表示的字符串是不可变的。所以,每次对 String 变量进行修改的时候其实都等同于生成了一个新的 String 对象。

​ 由于String类的不可更改,因此直接使用String类对字符串进行修改、拼接等操作的过程中,JVM会不断的进行创建、回收对象操作,会导致速度变慢。

String类中包含了大量的对字符串进行操作的方法,这里总结了一部分供参考。

public char charAt(); 返回指定索引处的char值

public int codePintAt(int index);返回指定索引处的字符的asc码表值

public int codePointBefore(int index); 返回指定索引前一个字符的asc码表值,传入0则会报异常

public int lastIndexOf(int ch); 传入指定字符的asc码表值,返回其最后一次在字符串中出现的索引

public int length(); 返回字符串的长度

public String replace(char oldChar, char newChar);将字符串中指定的字符替换为新的字符并返回修改后的新字符串

public String[] split(String regex); 将字符串按照某个字符串剪切并返回一个字符串数组

public String trim(String str); 删去给定字符串的开头和末尾的空格(如果存在)并返回新的字符串

public String toLowerCase(String str); 将字符串中大写字母全变为小写并返回

public String toUpperCase(String str); 将字符串中小写字母全变为大写并返回

public String subSequence(int beginIndex, int endIndex); 剪切出指定位置的子字符串并返回

public char[] toCharArray(); 将字符串转换为新的字符数组.

public boolean startsWith(String prefix); 判断此字符串是否以指定字符串开头

public boolean endsWith(String prefix); 判断此字符串是否以指定字符串结尾

public String valueOf();此方法包含大量的重载,可以将任意基本数据类型数据传入并转换为字符串形式并返回

二、StringBuffer类

StringBuffer是线程安全、可变的字符序列。由于原码中增加了锁机制,其可以安全的被多个线程使用。StringBuffer类是字符串变量,当使用apend()等操作时,内存地址不发生变化。因此,涉及到字符串的修改操作时,应该用到StringBuffer类或者StringBuilder类。

因为方法被上锁,所以StringBuffer的性能一般会比StringBuilder差,单线程中建议使用StringBuilder。

操作StringBuffer类是直接对其内容的改变,并不会改变其指向的地址值。

  • SringBuffer类向String类转化

    调用StringBuffer类中的toString方法

  • Sring类向StringBuffer类转化

    构造StringBuffer类对象的时候传入待转化的String类字符串。

    StringBuffer sb = new StringBuffer(String str)
    

StringBuffer类常用方法

public StringBuffer apend();可以在括号中传入任意内容,就会加到字符串的后面并返回,

public StringBuffer insert(int offset, 插入内容);插入方法,在指定索引处插入任意基本数据类型或者String类型。

三、StringBuilder类

StringBuilder类与StringBuffer类具有通用的作用,但是区别在于StringBuilder类被设计用于单个线程使用的地方。因此在多线程的地方使用StringBuilder类可能造成线程不安全。如果需要同步,建议使用StringBuffer类。

多线程线程使用的地方。因此在多线程的地方使用StringBuilder类可能造成线程不安全。如果需要同步,建议使用StringBuffer类。

StringBuilder的方法与StringBuffer的方法类似,这里不再赘述。

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

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

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