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

Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

程序员文章站 2022-07-10 21:13:05
String、StringBuffer、StringBuilder类String类构造方法:常用方法:判断方法:获取方法:转换方法:分割方法StringBuffer构造函数String类:字符串处理常用且重要,Java字符串是String类的对象。String类位于Java.lang包中。StringBuffer类:位于java.lang包中的,表示内容可变的字符串,每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量...

1 简介

String类:字符串处理常用且重要,Java字符串是String类的对象。String类位于Java.lang包中。

StringBuffer类:位于java.lang包中的,表示内容可变的字符串,每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuilder类:类似StringBuffer类,可变,速度快,线程不安全

String、StringBuffer与StringBuilder之间区别

String StringBuffer StringBuilder
底层是一个final类型的字符数组,不可变类,速度最慢 StringBuffer是可变类,继承了AbstractStringBuilder抽象类,和线程安全的字符串操作类 可变类,继承了AbstractStringBuilder抽象类,速度更快,
不可变 可变 可变
- 线程安全 线程不安全
- 多线程操作字符串 单线程操作字符串
适用于少量的字符串操作 适用多线程下在字符缓冲区进行大量操作 适用于单线程下在字符缓冲区进行大量操作

Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2 String类

Java字符串是String类的对象,String类位于Java.lang包中。

2.1 构造函数

Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2.2 常用方法

2.2.1 判断方法

public boolean equals (Object anObject):判断调用方法的字符串是否与参数anObject所对应字符串相等

public boolean equals (String anotherString):判断调用方法的字符串是否与参数anotherString所对应字符串相等,不分大小写。Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2.2.2 获取方法

public int length () :返回此字符串的长度。

public String concat (String str) :将指定的字符串str连接到该字符串String的末尾,并返回一个新的String对象。

public char charAt (int index) :返回指定索引处的 char值。

public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。

public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符
串结尾。

public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex
endIndex截取字符串。含beginIndex,不含endIndex
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2.2.3 转换方法

public char[] toCharArray () :将此字符串转换为新的字符数组。

public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。

public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。[ CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。]
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2.2.4 分割方法

public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
方法演示,代码如下:
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

2.2.4 其他

去除首位空格:

public String trim():返回字符串的副本,忽略前导空白和尾部空白。

判断字符串的开始与结尾
public boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。
public boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。
public int compareTo(String anotherString):按字典顺序比较两个字符串。

3 StringBuffer

String类一旦被创建后,内容永不变,String类的对象又叫常量字符串。每次对String的操作都会生成新的String对象,效率低下,浪费大量优先的内存空间。
而位于java.lang包中的StringBuffer类,表示内容可变的字符串,每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

3.1 构造函数

public StringBuffer():无参构造方法,构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符;

public StringBuffer(int capacity) :构造一个不带字符,但具有指定初始容量的字符串缓冲区;

public StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

public class StringBufferDemo {
    public static void main(String[] args) {
        //public StringBuffer();
        StringBuffer buffer1 = new StringBuffer();
        System.out.println("buffer1:"+buffer1); //buffer1:
        System.out.println("buffer1.capacity:"+buffer1.capacity()); //buffer1.capacity:16
        System.out.println("buffer1.length:"+buffer1.length()); //buffer1.length:0  没有加入字符
        System.out.println("---------------------------------");
    }
}

3.2 常用方法

3.2.1 append方法

追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:

	StringBuffer sb = new StringBuffer("abc");
	sb.append(true); 

则对象sb的值将变成”abctrue”。

3.2.2 deleteCharAt方法

public StringBuffer deleteCharAt(int index) :该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:

	StringBuffer sb = new StringBuffer("Test");
	sb.deleteCharAt(1);

删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。 ==》“Tst”

public StringBuffer delete(int start,int end) :该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:

	StringBuffer sb = new StringBuffer("TestString");
	sb. delete (1,4);

该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。 ==》“TString”。

3.2.3 insert方法

在StringBuffer对象中插入内容,然后形成新的字符串。

	StringBuffer sb = new StringBuffer("TestString");
	sb.insert(4,false);//“TestfalseString”

3.2.4 reverse方法

将StringBuffer对象中的内容反转,然后形成新的字符串。

	StringBuffer sb = new StringBuffer("abc");
	sb.reverse();//“cba”

3.2.5 setCharAt方法

修改对象中索引值为index位置的字符为新的字符。

	StringBuffer sb = new StringBuffer(“abc”);
	sb.setCharAt(1,'D'); //"aDc"

3.2.6 trimToSize方法

将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

StringBuffer的常用方法概览 :

package stringbuffer;
public class StringBuffer_1 {
	public static void main(String[] args) {
		StringBuffer sb=new StringBuffer();
		add(sb);
		System.out.println("------------------------------");
		getChars(sb);
		System.out.println("------------------------------");
		get(sb);
		System.out.println("------------------------------");
		reverse(sb);
		System.out.println("------------------------------");
		replace(sb);
		System.out.println("------------------------------");
		delete(sb);
	}
	//将sb中的数据按指定角标位存入字符数组按角标位存
	public static void getChars(StringBuffer sb){
		char[] c=new char[5];
		sb.getChars(2, 5,c, 2);
		for (int i = 0; i < c.length; i++) {
			System.out.println("c["+i+"]="+c[i]+";");
		}
	} 
	//反转
	public static void reverse(StringBuffer sb){
		System.out.println(sb.reverse());
	}
	//修改,替换
	public static void replace(StringBuffer sb){
		System.out.println(sb.replace(3,8,"abc"));//指定要替换的首尾角标,替换成指定字符串
		sb.setCharAt(3,'q');//指定角标替换字符
		System.out.println(sb);
	}
	//获取
	public static void get(StringBuffer sb){
		System.out.println(sb.charAt(3));
		System.out.println(sb.indexOf("true"));
		System.out.println(sb.indexOf("f",11));//从指定角标开始获取指定字符串角标
	}
	//存储
	public static void add(StringBuffer sb){
		sb.append(33).append(true).append("ffdsa");
		System.out.println(sb);
		sb.insert(2,false);
		System.out.println(sb);
		
	}
	//删除
	public static void delete(StringBuffer sb){
		sb.append("fdafdsa");
		System.out.println(sb.delete(2, 5));//删除指定区域角标元素
		System.out.println(sb.deleteCharAt(2));//删除指定角标元素
		System.out.println("清空缓冲区:"+sb.delete(0,sb.length()));//清空缓冲区
	}
}

4 StringBuilder

与StringBuffer类似,也是可变,但是快,线程不安全。构造方法、常用方法都差不多。

4.1 构造方法

Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

4.2 常用方法

Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类

本文地址:https://blog.csdn.net/Artenis_/article/details/107340636