Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类
String、StringBuffer、StringBuilder类
1 简介
String类:字符串处理常用且重要,Java字符串是String类的对象。String类位于Java.lang包中。
StringBuffer类:位于java.lang
包中的,表示内容可变的字符串,每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuilder类:类似StringBuffer类,可变,速度快,线程不安全
String、StringBuffer与StringBuilder之间区别
String | StringBuffer | StringBuilder |
---|---|---|
底层是一个final类型的字符数组,不可变类,速度最慢 | StringBuffer是可变类,继承了AbstractStringBuilder抽象类,和线程安全的字符串操作类 | 可变类,继承了AbstractStringBuilder抽象类,速度更快, |
不可变 | 可变 | 可变 |
- | 线程安全 | 线程不安全 |
- | 多线程操作字符串 | 单线程操作字符串 |
适用于少量的字符串操作 | 适用多线程下在字符缓冲区进行大量操作 | 适用于单线程下在字符缓冲区进行大量操作 |
2 String类
Java字符串是String类的对象,String类位于Java.lang包中。
2.1 构造函数
2.2 常用方法
2.2.1 判断方法
public boolean equals (Object anObject)
:判断调用方法的字符串是否与参数anObject
所对应字符串相等
public boolean equals (String anotherString)
:判断调用方法的字符串是否与参数anotherString
所对应字符串相等,不分大小写。
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
。
2.2.3 转换方法
public char[] toCharArray ()
:将此字符串转换为新的字符数组。
public byte[] getBytes ()
:使用平台的默认字符集将该 String编码转换为新的字节数组。
public String replace (CharSequence target, CharSequence replacement) :
将与target
匹配的字符串使用replacement
字符串替换。[ CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。]
2.2.4 分割方法
public String[] split(String regex) :
将此字符串按照给定的regex(规则)拆分为字符串数组。
方法演示,代码如下:
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 加上字符串参数的长度。
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对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
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 构造方法
4.2 常用方法
本文地址:https://blog.csdn.net/Artenis_/article/details/107340636
推荐阅读
-
3.2常用类(java学习笔记)String与StringBuffer
-
Java实用包学习笔记(2)—— StringTokenizer类
-
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类
-
3.2常用类(java学习笔记)String与StringBuffer
-
Java实用包学习笔记(2)—— StringTokenizer类
-
java笔记之Object,String,StringBuilder,StringBuffer,时间类和日期类以及包装类
-
Java实用包学习笔记(1)—— String、StringBuffer、StringBuilder类
-
JAVASE 小白学习笔记 (12-3)Java中的常用类--StringBuffer类、StringBuilder类
-
java笔记之Object,String,StringBuilder,StringBuffer,时间类和日期类以及包装类