- 总结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
1.String简介
String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。
Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。 字符串连接是通过StringBuilder (或StringBuffer )类及其append方法实现的。 字符串转换是通过方法来实现toString ,由下式定义Object和继承由在Java中的所有类。 有关字符串连接和转换的其他信息,请参阅Gosling,Joy和Steele, Java语言规范 。
除非另有说明,否则传递null参数到此类中的构造函数或方法将导致抛出NullPointerException 。
A String表示UTF-16格式的字符串,其中补充字符由代理对表示 (有关详细信息,请参阅Character课程中的Character部分)。 索引值是指char代码单元,所以补充字符在String中使用两个String 。
String类提供处理Unicode代码点(即字符)的方法,以及用于处理Unicode代码单元(即char值)的方法。
1.如何创建一个String
String string="abcdefg";
2.String常用方法
- int length()
返回此字符串的长度。 - boolean isEmpty()
length=0则返回true’ - char charAt(int index)
返回char指定索引处的值。 指数范围为0至length() - 1 。 该序列的第一个char值在索引0 ,下一个索引为1 ,依此类推,与数组索引一样。
string.charAt(int index)
- int codePointAt(int index)
返回指定索引处的字符的码值(Unicode代码点) - void getChars(int srcBegin,
int srcEnd,
char[] dst,
int dstBegin) ------------ dstBegin :目标数组中的起始偏移量
s.getChars(0,2,a,0);
将此字符串中的字符复制到目标字符数组(dst)中。
要复制的第一个字符是索引srcBegin ; 要复制的最后一个字符在索引srcEnd-1 - boolean equals(Object anObject)
将此字符串与指定对象进行比较。 其结果是true当且仅当该参数不是null并且是String对象,表示相同的字符序列作为该对象 - int compareTo(String anotherString)
按字典顺序比较两个字符串。 比较是基于字符串中每个字符的Unicode值。 由该String对象表示的字符序列按字典顺序与由参数字符串表示的字符序列进行比较。 如果String对象比anotherString大,则返回正整数,一样则返回0,小于则返回负整数。 - boolean startsWith(String prefix, int toffset)
测试在指定索引处开始的此字符串的子字符串是否以指定的前缀开头。
s.startsWith("cdefg",2); 返回true
- boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结尾。 - int indexOf(int ch)
返回指定字符第一次出现的字符串内的索引。 如果与值的字符ch在此表示的字符序列发生String第一事件发生之对象,则索引(在Unicode代码单元)被返回。不存在返回-1.
s.indexOf("b");返回1
- int lastIndexOf(int ch)
返回指定字符的最后一次出现的字符串中的索引。 对于从0到0xFFFF(含)范围内的ch的值。 - int indexOf(String str)
返回指定子字符串第一次出现的字符串内的索引。
返回的索引是其中的最小值k :
this.startsWith(str, k)
如果k的值不存在,则返回-1 。 - String substring(int beginIndex)
返回一个字符串,该字符串是此字符串的子字符串。 子字符串以指定索引处的字符开头,并扩展到该字符串的末尾。
"unhappy".substring(2) returns "happy"
"Harbison".substring(3) returns "bison"
"emptiness".substring(9) returns "" (an empty string)
- String concat(String str)
将指定的字符串连接到该字符串的末尾。
"cares".concat("s") returns "caress"
"to".concat("get").concat("her") returns "together"
- String replace(char oldChar, char newChar)
返回从替换所有出现的导致一个字符串oldChar在此字符串newChar 。
"mesquite in your cellar".replace('e', 'o');//单双引号都行
returns "mosquito in your collar"
- boolean matches(String regex)
已知字符串是否匹配给定的参数regex,匹配true,否则false - boolean contains(CharSequence s)
当且仅当此字符串包含指定的char值序列时才返回true
"abc,de,fg".split(","); return[abc, de, fg]
"abcdefg".split("d"); return[abc, efg]
- String join(CharSequence delimiter,CharSequence… elements)
返回一个新的字符串,由CharSequence elements的副本组成,并附有指定的delimiter的delimiter 。即所有elements中插入delimiter组合成的字符串
String.join("-","I","love","java");return I-love-java
- String trim()
返回一个字符串,其值为此字符串,并删除任何前导和尾随空格 - char[] toCharArray()
将此字符串转换为新的字符数组。 - String valueOf(Object obj)
返回 Object参数的字符串 Object形式。即把任何形式的obj转换为String形式