----------- android培训、java培训、java博客、java学习型技术博客、期待与您交流! --------------
本章主要的知识点总结:1、String类的简介,如何创建字符串。
2、字符串常见方法:增删改查等
3、StringBuffer类的作用和常见方法
4、StringBuilder的作用,它和StringBuffer类的区别
一、String类的简介
String类位于包java.lang内,直接继承Object类,是final类,不能有子类。Java1.6版本的API文档对String类有如下描述:
public final class String extends Object
implements Serializable,Comparable<String>, CharSequence
String 类代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
下面结合API文档,谈一下String类:
(1)一系列连续字符组成的一个序列,叫字符串,字符串对象允许为空(不是指该字符串的引用为null),也就是没有字符。
生活中很多数据的描述都采用的是字符串的,而且我们还会对其进行操作。 所以,Java就提供了这样的一个类供我们使用。
(2)创建字符串对象
1、String():初始化一个新创建的 String 对象,使其表示一个空字符序列。
String s = new String();
2、String(byte[] bytes): 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的String。
byte[] bytes = {1, 2, 3};
String s = new String(bytes);
3、String(byte[] bytes, Charset charset):通过使用指定的 charset 解码指定的 byte 数组,构造一 个新的String。
byte[] bytes = {1, 2,3};
Charset charset =Charset.forName(“UTF-8”);
String s = new String(bytes, charset);
4、String(byte[]bytes,int index,int length): 通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
byte[] bytes = {1, 2, 3};
String s = new String(bytes,1,2);
5、 String(byte[] bytes, int offset,int length, Charset charset) :通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的String。
6、String(byte[] bytes, int offset, int length, String charsetName) : 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的String。
byte[] bytes = {1, 2, 3};
String str = “UTF-8”;
String s = new String(bytes,1,2,str);
7、 String(byte[] bytes, String charsetName): 通过使用指定的 charset 解码指定的 byte 数组,构 造一个新的String。
8、 String(char[] value) : 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列
9、String(char[] value, int offset,int count): 分配一个新的 String,它包含取自字符数组参数一个 子数组的字符。
10、String(int[] codePoints, int offset, int count):分配一个新的 String,它包含 Unicode 代码点数 组参数一个子数组的字符。
11、String(String original) :初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序 列;换句话说,新创建的字符串是该参数字符串的副本。
String s = new String(“Iam a string”);
12、String(StringBuffer buffer) :分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字 符序列。
StringBuffer sb = newStringBuffer(“a string”);
String s = new String(sb);
13、String(StringBuilder builder):分配一个新的字符串,它包含字符串生成器参数中当前包含的 字符序列。
String类的小例子 :
A:请问String s = new String("hello");创建了几个对象。
两个。一个"hello"字符串对象,一个s对象。
B:请写出下面的结果
String s1 = new String("abc");
Strign s2 = new String("abc");
String s3="abc";
String s4="abc";
System.out.println(s1==s2); //false
System.out.println (s1==s3); //false
System.out.println (s3==s4); //true
C:字符串对象一旦被创建就不能被改变。
指的是它们的值在创建之后不能更改,并非指该字符串对象的引用不可以指向别的字符串对象。
二、字符串中各种功能的方法
A:判断
boolean equals(ObjectanObject):判断两个字符串的内容是否相同
boolean equalsIgnoreCase(StringanotherString):判断两个字符串的内容是否相同,不区分大小写
boolean contains(String s):判断一个字符串中是否包含另一个字符串
boolean endsWith(Stringsuffix):测试此字符串是否以指定的后缀结束
booleanstartsWith(Stringsuffix):测试此字符串是否以指定的前缀开始
boolean isEmpty():测试字符串是否为空
B:获取
int length():返回此字符串的长度
char charAt(int index):返回指定索引处的 char值
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch,intfromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引 开始搜索。
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str,intfromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定 的索引开始。
int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。
int lastIndexOf(int ch,intfromIndex):返回指定字符在此字符串中最后一次出现处的索引,从指定 的索引处开始进行反向搜索。
int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。
int lastIndexOf(String str,intfromIndex):返回指定子字符串在此字符串中最后一次出现处的索 引,从指定的索引开始反向搜索。
Stringsubstring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。
String substring(intbeginIndex,int endIndex):返回一个新字符串,它是此字符串的一个子字符 串。
C:转换
byte[ ] getBytes():从字符串到字节数组的方法。
char[ ] toCharArray():从字符串到字符数组的方法。
static StringcopyValueOf(char[]data):返回指定数组中表示该字符序列的 String。
static StringcopyValueOf(char[]data, int offset, int count):返回指定数组中表示该字符序列的 String。
staticString valueOf(数据类型):把该数据类型的数据转换成字符串。
String toLowerCase():把字符串转换成小写。
String toUpperCase():把字符串转换成大写。
D:替换
String replace(charoldChar,char newChar):用新字符替换旧字符。
String replace(Stringtarget,String replacement):用新的子串换旧串。
E:分割
String[] split(Stringregex):根据指定的字符串把一个字符串分割成一个字符串数组
F: Stringtrim():去除字符串的前后空格
G:比较
int compareTo(String,anotherString):按字典顺序比较两个字符串。
int compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写。
H:连接
String concat(String str):将指定字符串连接到此字符串的结尾。
三、StringBuffer类
StringBuffer是一个容器,是字符串缓冲区,可以对字符串改变。长度可变,可以操作多个数据类型,最终会通过toString方法变成字符串。
1、存储
StringBuffer append( ):将指定数据数据作为参数,添加到已有数据结尾处
StringBuffer insert(index,String str ):可以将数据插入到指定index位置
2、删除
StringBuffer delete(start,end): 删除缓冲区的数据,包头不包尾
StringBuffer deleteCharAt(index): 删除指定位置的字符
3、获取
char charAt(index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4、修改
StringBuffer replace(int start,int end,string)
void setCharAt(int index,char ch)
5、反转
StringBuffer reverse( )
6、void getChars(int srcBegin,int srcEnd,char[ ] dst,int dstBegin)
将缓冲区的指定数据存储到指定数组中
JDK1.5后出现StringBuilder
StringBuilder是线程不同步,效率较高,在单线程情况下使用。
StringBuffer线程同步,在多线程下使用,效率较低。
升级三要素:提高效率
简化书写
提高安全性