java StringStringBufferStringBuilder

Posted 火磷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java StringStringBufferStringBuilder相关的知识,希望对你有一定的参考价值。

 1.简介

String是不可变类,且是线程安全的;

StringBuffer是可变类,且是线程安全的;

StringBuilder是可变类,且不是线程安全的。

注:“可变/不可变”指对该类对象进行修改操作时,是否会产生新的对象。对String对象进行修改时会产生新的对象,

对StringBuffer和StringBuilder对象修改时不会产生新的对象。

String类的定义如下,使用了final关键字:

1 /** The value is used for character storage. */
2 private final char value[];
3 
4 /** The offset is the first index of the storage that is used. */
5 private final int offset;
6 
7 /** The count is the number of characters in the String. */
8 private final int count;

2.String类常用方法

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

int indexOf(int ch):返回指定字符的索引(第一次出现);

int indexOf(int ch, int fromIndex):返回指定字符的索引(第一次出现),并指定索引开始查询;

int indexOf(String str):返回给定字符串第一次出现的索引;

int indexOf(String str, int fromIndex):返回给定字符串第一次出现的索引,指定开始检索索引;

int lastIndexOf(int ch):返回指定字符最后一次出现的索引;

int lastIndexOf(int ch, int fromIndex):返回指定字符最后一次出现的索引,从指定索引开始反向查询;

int lastIndexOf(String str):返回给定字符串最后一次出现的索引;

int lastIndexOf(String str, int fromIndex):返回给定字符串最后一次出现的索引,指定开始检索索引;

String replace(char oldChar, char newChar):替换指定的字符(所有),返回新字符串;

String substring(int beginIndex):返回指定开始索引的子字符串(默认到结尾);

String substring(int beginIndex, int endIndex):返回指定开始索引和结束索引的子字符串;

byte[] getBytes():使用默认字符集将字符串编码为 byte 序列,并返回一个新byte数组;

char[] toCharArray():将字符串转换为一个新的字符数组;

String[] split(String regex):根据给定正则表达式的匹配拆分此字符串;

String concat(String str):将给定字符串拼接到该字符串末尾;

boolean contains(CharSquence s):判断字符串是否包含给定字符序列;

String toLowerCase():使用默认规则将字符串中的字符小写;

String toUpperCase():使用默认规则将字符串中的字符大写;

String valueOf(Object obj) :将Object类型数据转为String类型数据;

String trim():去除字符串中的所有空格;

int length():返回字符串长度;

示例代码:

技术图片
 1 import java.util.Arrays;
 2 
 3 public class StringFunc {
 4     public static void main(String[] args){
 5 
 6         String str1 = "1223";
 7 
 8         //返回指定索引的char值
 9         char s1 = str1.charAt(1);
10         System.out.println(s1);     // 2
11 
12         //返回指定字符的索引
13         int index0 = str1.indexOf(‘4‘);
14         int index1 = str1.indexOf(‘2‘);
15         int index2 = str1.indexOf(‘2‘,2);
16         System.out.println(index0+" "+index1+" "+index2);   // -1 1 2
17         int index3 = str1.indexOf("22");
18         int index4 = str1.indexOf("22",2);
19         System.out.println(index3+" "+index4);         // 1 -1
20 
21         // 判断字符串是否包含指定字符串,需要连续("13"不行)
22         boolean flag = str1.contains("12");
23         System.out.println(flag);
24 
25         // 替换字符串中指定的字符(会替换多个)
26         String str2 = str1.replace(‘2‘,‘4‘);
27         System.out.println(str2);         // "1443"
28 
29         //返回一个子串,指定开始/结束位置(不包含结束位置)
30         String str3 = str1.substring(1);
31         String str4 = str1.substring(1,3);
32         System.out.println(str3);          // "223"
33         System.out.println(str4);         // "22"
34 
35         // 字符串拼接
36         String str5 = str3.concat(str4);
37         System.out.println(str5);        // 22322
38 
39         // 将字符串转换为byte数组
40         byte[] b1 = str1.getBytes();
41         for(byte b:b1){
42             System.out.print(b+" ");   // 49 50 50 51
43         }
44 
45         // 字符串转char数组
46         char[] charStr1 = str1.toCharArray();
47         System.out.println(charStr1);       // [‘1‘, ‘2‘, ‘2‘, ‘3‘]
48 
49         // 拆分字符串
50         String str6 = "1,2,3,4";
51         String[] arr6 = str6.split(",");
52         System.out.println(Arrays.toString(arr6));   // [‘1‘, ‘2‘, ‘3‘, ‘4‘]
53 
54     }
55 }
View Code

3.StringBuffer类常用方法

StringBuffer append(Object obj):将object参数的字符串表达式添加到序列;

StringBuffer insert(int offset, Object obj):向序列插入指定偏移量的object参数的字符串表示式;

StringBuffer delete(int start, int end):从序列中删除给定开始/结束索引的字符序列;

StringBuffer replace(int start, int end, String str):使用给定字符串替换给定开始/结束索引的字符序列;

StringBuffer reverse():返回反转的序列;

CharSequence subSequence(int start, int end):从序列中返回给定开始/结束索引的子序列;

void setCharAt(int index, char ch):序列指定索引处的字符设置为char值;

void setLength(int newLength):设置字符序列的长度;

int indexOf(String str):返回指定子字符串第一次出现的字符串中的索引;

int indexOf(String str, int fromIndex):从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引;

char charAt(int index):返回给定索引在该序列中的char值;

int capacity():返回当前容量;

示例代码:

技术图片
 1 public class StringBufferFunc {
 2 
 3     public static void main(String[] args){
 4 
 5         StringBuffer sb = new StringBuffer("1223");
 6 
 7         // append
 8         sb.append("45");
 9         System.out.println(sb);    // 122345
10 
11         // insert
12         sb.insert(1,1);
13         System.out.println(sb);    // 1122345
14 
15         // delete/deleteCharAt
16         sb.delete(3,5);
17         System.out.println(sb);    // 11245
18         sb.deleteCharAt(2);
19         System.out.println(sb);    // 1145
20 
21         // replace
22         sb.replace(1,3,"6");
23         System.out.println(sb);     // 165
24 
25         // reverse
26         sb.reverse();
27         System.out.println(sb);  // 561
28 
29         // setCharAt
30         sb.setCharAt(0,‘2‘);
31         System.out.println(sb);       // 261
32 
33         // setLength
34         sb.setLength(2);
35         System.out.println(sb);    // 26
36 
37         // subSequence
38         CharSequence cs = sb.subSequence(0,1);
39         System.out.println(cs);     // 2
40 
41         // toString
42         String str = sb.toString();
43         System.out.println(str);   // 26
44     }
45 }
View Code

4.StringBuilder类常用方法

 StringBuilder类的方法与StringBuffer类似,这里不再赘述。

5.其他说明

(1)基本原则:String用于操作少量的数据;StringBuilder用于单线程操作大量数据;StringBuffer用于多线程操作大量数据。

(2)不要使用String类的"+"来进行频繁的拼接,它会导致性能变差;应使用StringBuffer或StringBuilder类进行这些操作。

(3)为了获得更好的性能,在构造 StringBuffer 或 StringBuilder 时应尽可能指定它们的容量。

!!!!!!!

以上是关于java StringStringBufferStringBuilder的主要内容,如果未能解决你的问题,请参考以下文章

Java 布尔运算

java [Java] Java常用代码#java

Java - 35 Java 实例

Java While 循环

Java 字符串

Java If ... Else