欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java汇总(三):String篇 String、StringBuffer、StringBuilder

程序员文章站 2022-05-04 08:42:00
一、可变性String 类中使⽤ final 关键字修饰字符数组来保存字符串(在 Java 9 之后,String 类的实现改⽤ byte 数组存储字符串),所以 String 对象是不可变的。⽽StringBuilder 与 StringBuffer 都继承⾃ AbstractStringBuilder 类,在该类中也是使⽤字符数组保存字符串,但是没有⽤ final 关键字修饰,所以这两种对象都是可变的。二、线程安全性String 中的对象是不可变的,也就可以理解为常量,线程安全。StringB...

一、可变性
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);
		}

Java汇总(三):String篇   String、StringBuffer、StringBuilder
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