Java汇总(三):String篇 String、StringBuffer、StringBuilder
一、可变性
String 类中使⽤ final 关键字修饰字符数组来保存字符串(在 Java 9 之后,String 类的实现改⽤ byte 数组存储字符串),所以 String 对象是不可变的。
⽽StringBuilder 与 StringBuffer 都继承⾃ AbstractStringBuilder 类,在该类中也是使⽤字符数组保存字符串,但是没有⽤ final 关键字修饰,所以这两种对象都是可变的。
二、线程安全性
String 中的对象是不可变的,也就可以理解为常量,线程安全。
StringBuffer 对⽅法加了同步锁,所以是线程安全的。StringBuilder 是⾮线程安全的。
所以, 操作少量的数据: 适⽤ String;
当进行大量字符串拼接操作的时候,如果是单线程就用StringBuilder会更快些,如果是多线程,就需要用StringBuffer保证数据的安全性。
三、常用方法
String:
str.length(); //获取字符串长度,注意有括号,且可以有长度为0的字符串,即空字符串
str.charAt(int index); //获取指定位置的字符,基0
str.toCharArray(); //获取对应的字符数组
str.substring(3); //截取从第3个开始的字符串 (基0)
str.substring(3,5); //左闭右开
str.split(str1); //根据分隔符str1进行分隔,返回一个字符串数组String[],注意分隔符str1必须是String类型,且若分隔符位于原字符串的最后,则最后分割的结果中不会多一个空字符串;
如:
String str = "hi,hi,hi,";
String[] strs = str.split(",");
for (String string : strs) {
System.out.println(string);
}
str.trim(); //去掉首尾空格
str.contains(String); //是否包含子字符串,返回boolean类型
下面的也是常见方法,但是面试刷题时一般最好不要直接使用:
str.toLowerCase(); //全部变成小写
str.toUpperCase(); //全部变成大写
str.indexOf(int);
str.indexOf(String); //判断字符或者子字符串出现的位置
str.replaceAll(String,String); //替换所有的
str.replaceFirst(String,String); //只替换第一个
StringBuffer和StringBuilder的基本方法大致相同,由于面试题中一般都是单线程,无需考虑线程安全性,使用StringBuilder会更快些,这里也以其为例进行说明:
new:
StringBuilder builder = new StringBuilder(); //创建一个空的StringBuilder对象
StringBuilder builder = new StringBuilder(str1); //根据str1创建一个StringBuilder对象
builder.append(String/char/char[]); //append追加
builder.delete(int start,int end); //删除
builder.insert(int,char/char[]/String); //插入
builder.reverse(); //反转
builder.length(); //长度
//注意,里面没有contains()等方法;
本文地址:https://blog.csdn.net/qq_30476717/article/details/107694421
上一篇: 哪来的这么多谣言
下一篇: RabbitMQ中生产者丢消息的情况
推荐阅读
-
Java面试题(String、StringBuilder、StringBuffer)
-
Java之String、StringBuffer、StringBuilder的区别分析
-
Java汇总(三):String篇 String、StringBuffer、StringBuilder
-
JAVA基础 String StringBuilder StringBuffer区别和使用场景
-
详解java中String、StringBuilder、StringBuffer的区别
-
java中String、StringBuffer、StringBuilder的区别
-
Java中的String,StringBuilder,StringBuffer三者的区别
-
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类
-
java语法string stringbuffer stringbuilder区别
-
java String、StringBuilder和StringBuffer的区别详解