String
1.字符串与字符数组可以互相交换
public String(char value[]) 构造,将字符数组中的所有内容变为字符串 String str = new String(value);
public String(char value[],int offset, int count)构造,将部分字符数组中的内容变为字符串 String str = new String(value,0,5) 从位置0开始,获取五个字符作为字符串,注意的是count不能超出数组的范围
public char charAt(int index) 取得指定索引位置的字符,索引从零开始 例 :char a = str.charAt(1);
public char[] toCharArray() 将字符串作为字符数组返回 char[] data = str.toCharArray()
同样的,我们可以将字节数组和字符串进行互相交换,
字节数组构造字符串方法与上面的相似,看看其他:
public byte[] getBytes() 将字符串以自己的数组的形式返回 str.getBytes();
public byte[] getBytes(String str) 编码转换处理
字符串的常见操作:
public boolean equals(object anObject) 区分大小写的比较
public boolean equalsIgnorecase(String anotherSrting) 不区分大小写的比较
public int compareTo(String anothertString ) 比较两个字符串的大小 相等0,大 返回大于0,小 返回小于0
字符串的查找:
public boolean contans(CharSequece s) 判断一个子字符串是否存在
public int indexOf(String str ) 从头开始查找指定字符串的位置,查到了返回位置的开始索引,查不到返回-1
public int indexOf(String str,int fromIndex) 从指定位置开始查找子字符串的位置
给indexOf前面加上last ,即从后向前查找一个字符拆的位置。以上两个方法均可改写。
startsWith(string str) 判断是否存在以指定字符串开头。
startsWith(string str,int offset) 从指定位置判断是否以指定字符串开头
endsWith(String str) 判断是否以指定字符串结尾
字符串的替换
replace(String regex,String replacement) 替换所有的指定内容,用后面的替换前面的
replaceFirst(string regex,String replace)替换首个内容
字符串的拆分:
String[] split(String regex) 将字符串全部拆分,返回一个字符串的数组
String str = “hello world hello bit” ;String[] result = str.split(" ") ;for(String s: result) {System.out.println(s);}
String [] split(String regex, int limit ) 将字符串部分拆分,该数组长度就是limit极限
这个方法比较难理解,我们举一个例子:
String str = “hello world hello bit” ;String[] result = str.split(" ",3) ;for(String s: result) {System.out.println(s);}
输出为:
字符串截取:
String substring(int beginIndex) 从指定位置截取到结尾
String substring(int beginIndex,int endIndex) 截取区间内容,左闭右开
其他方法;
String trim() 去掉字符串中的左右空格,保留中间的空格
String toUpperCase() 字符串转大写
String toLowerCase() 字符串转小写
String intern() 字符串入池操作
String concat(string str ) 字符串连接,等同于”+“,不入池
int length() 取得字符串长度
boolean isEmpty() 判断字符串是否为空字符串,但不是null,而是字符串的长度为0
StringBuffer
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。
1.在String中用"+"来进行字符串连接,但是这个操作在StringBuffer类中需要更改为append()方法:
StringBuffer append(各种数据类型 num)
String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StingBuffer。
注意:String和StringBuffer类不能直接转换。如果要想互相转换,可以采用如下原则:String变为StringBuffer:利用StringBuffer的构造方法或append()方法
StringBuffer变为String:调用toString()方法。
StringBuffer 有的方法;
StringBuffer reverse() 字符串的反转
StringBuffer delete(int start,int end) 删除指定范围的数据
String,与StringBuffer、StringBuilder的区别:
1.String的内容不能修改,StringBuffer与StringBuilder的内容可以修改。
2.StringBuffer和StringBuilder的大部分功能是相似的。
3.String 采用同步处理,属于线程安全操作;而StringBuilder采用异步处理,属于线程不安全操作。