当前位置: 代码迷 >> 综合 >> Java:关于String/StringBuilder/StringBuffer那些事儿
  详细解决方案

Java:关于String/StringBuilder/StringBuffer那些事儿

热度:23   发布时间:2023-12-02 04:46:25.0

概述  

  • String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。
  • StringBuffer就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列,把所有修改数据的方法都加上synchronized。但是保证了线程安全是需要性能的代价的。
  • StringBuilder是JDK1.5发布的,它和StringBuffer本质上没什么区别,就是去掉了保证线程安全的那部分(不保证线程安全),减少了开销(提高了效率)。

String类

20种常用方法

和长度有关的方法

返回类型 方法名 作用
int length() 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符)

和数组有关的方法

返回类型 方法名 作用
byte[]   getBytes()   将一个字符串转换成字节数组
char[]   toCharArray() 将一个字符串转换成字符数组
String[] split(String)  将一个字符串按照指定内容劈

和判断有关的方法

返回类型 方法名 作用
boolean equals(String)

 判断两个字符串的内容是否一模一样

boolean equalsIgnoreCase(String) 忽略大小写的比较两个字符串的内容是否一模一样
boolean contains(String) 判断一个字符串里面是否包含指定的内容
boolean startsWith(String) 判断一个字符串是否以指定的内容开头
boolean endsWith(String) 判断一个字符串是否以指定的内容结尾

和改变内容有关的方法
(和改变内容有关的方法,都不会直接操作原本的字符串,而是将符合条件的字符串返回给我们,所以注意接收)

返回类型 方法名 作用
String  toUpperCase()

将一个字符串全部转换成大写

String     toLowerCase() 将一个字符串全部转换成小写
String replace(String,String) 将某个内容全部替换成指定内容
String replaceAll(String,String)  将某个内容全部替换成指定内容,支持正则
String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容
String substring(int) 从指定下标开始一直截取到字符串的最后
String substring(int,int) 从下标x截取到下标y-1对应的元素
String trim() 去除一个字符串的前后空格

和位置有关的方法

返回类型 方法名 作用
char charAt(int) 得到指定下标位置对应的字符
int   indexOf(String) 得到指定内容第一次出现的下标
int lastIndexOf(String) 得到指定内容最后一次出现的下标

StringBuilder类

常用方法

Stringbuilder采用了方法重载使得其可以处理各种数据类型

append()

insert()

delete()

replace()

charAt(index)

indexOf(char)

反转

reverse()

StringBuffer类

与StringBuilder类的操作基本一致

不过需要注意的是 StringBuffer 是线程安全的。