常用类
字符串相关类
- String——不可变字符串序列
- StringBuffer——可变字符序列,线程安全,效率低
- StringBuilder——可变字符序列,线程不安全,效率高
1) String
字符串声明
1、String stringName=“”;
因为字符串使用的比较多所以可以用字面量的方式声明,直接指向常量池的字符序列。所以用这种方式赋值两个字符串用==比较会是相等的
2、使用构造方法创建
String stringName = new String(无参或有参数);
- String() ——创建一个空的字符串对象。
- String(String str);——创建一个str的拷贝对象。(不是同个对象)
- String(char[] value);——传入一个char数组,拼接成字符串。
- String(char[] c,int positon,int count);——传入数组。并且指定起始位置和读取长度,拼接成字符串
String str = new String(a,1,2);
表示从a数组的第二个字符开始,取2个字符。
-
String(byte[] value);——传入一个byte二进制数组,转译成字符串。
-
String(byte[] value,int position,int count);——类似char的方式。
-
String(byte[] value,int position,int count,String charset);——可以指定字符集进行解码
用什么进行编码就必须用那种编码格式进行解码,java中输入一个字符即已经转换成指定格 式的二进制。因此同一个中文字,gbk和utf-8所存储的btye[]不同。
常用方法
-
public char charAt(int index);
返回索引处的字符。
str = "dafafdaf";
char ch = str.charAt(1); //ch结果是a
-
public int length();
返回字符串的长度
-
public int indexOf(string str);
查找一段字符串在原字符串中出现的最近的索引下标,找到返回下标,没找到返回-1 有重载方法,参数为2个时,后一个参数可指定查找的起始位置。
str = "dafafdaf";
int index1 = str.indexOf("dd");//返回-1
int index1 = str.indexOf("da");//返回0
int index1 = str.indexOf("da",2);//从第二个位置开始查找 包含第二个位置
-
public int lastIndexOf(String str);
与上述方法类似,只是从后往前找。
-
public boolean equals(String str);
比较字符串的值是否相同。重写了Object的toString方法
-
public boolean equalsIgnoreCase(String otherString)
比较字符串值是否相同,并且忽略大小写。
-
public String replace(char oldChar,char newChar);
在整个字符串中,使用新的字符代替老的字符,并返回字符串。不改变原字符串
str = "dafd_dafda";
String newStr = str.replace('d', '@');//结果为@af@_@af@a
-
public boolean startsWith(String str); 和endsWith(String str);
判断字符串是否以str开头/结尾
str = "dafd_dafda";
boolean bool= str.startsWith("da"); //返回true
bool = str.endsWith("f");//返回false
-
public String toUpperCase() 和 toLowerCase();
返回一个源字符串转成大写/小写的字符串。
-
public String substring(int 起始位置,int 结束位置);
参数如果只有起始位置,那么默认结束位置为最末尾。截取部分字符串返回。**左闭右开** 如果起始位置小于结束位置,则报错。如果等于则相当于没有。
-
public String[] split(String str);
参数可以传正则,根据参数来进行分割字符串。参数字符不包含进去。
str = "dafd_dafda";
String []newStrs = str.split("af");
//返回[d, d_d, da]
-
public String tirm();
返回该字符串去掉头尾的空格。
-
public static String valueOf(char data[])
String类中提供了String valueOf()方法,用作基本类型转换为字符串类型。
StringBuffer和StringBuilder
这两个类类似,用StringBuilder比较多,因为高效。StringBuffer中每个方法都加了synchronized 关键字。安全性高但是同一时刻只有一个线程能操作。所以效率比较低。
以下只用一类做说明。
构造器
StringBuilder()——空构造默认创建16个长度的char数组
StringBuilder(int capacity)——指定创建的容量。
StringBuilder(String str)——添加字符串到对象中,并且容量是字符串长度+16
方法
1、public StringBuilder append(String str)
最加字符串。也可以传入object的类,但必须实现CharSequence接口,一般只做传入String字符。
返回this。就是自己本身。
2、public StringBuilder reverse()
反转字符串
3、public StringBuilder delete(int start, int end)
删除字符串,指定起始位置和结束位置 **左闭右开**结构。
4、public StringBuilder replace(int start, int end, String str)
替换字符串,指定起始位置,结束位置,和替换的字符。**左闭右开**结构。
5、public StringBuilder insert(int offset, String str)
插入字符串。指定起始位置,在起始位置之前插入,和要插入的字符。