string类
String类常用功能:
1,获取:
1.1,int length():获取字符串中字符的长度(个数)。它与获取数组中的长度不同,数组中的length是基本属性,所以数组中的获取长度的方法是:int length。后面没有括号。
1.2,char charAt(int index):根据位置获取字符串中的字符
1.3,int indexOf(int ch):返回指字字符在此字符串中第一次出现的位置。
1.4,int indexOf(int ch,int formIndex):返回指定字符串在指定索引位置后第一次出现的位置。
1.5,int indexOf(String str):返回指定字符串在此字符串中第一次出现的位置。
1.6,int lastIndexOf(int ch):返回指定字符在此字符串最后出现的位置。
1.7,String substring(int beginIndex):返回一个字符串,从指定位置到未尾处(substring中的string是小写!)
1.8,Striing substring(int beginIndex,int endIndex):返回一个从指定位置到指定未尾处的字符串,包含头不包含尾。
2, 转换
2.1,byte[] getBytes():将字符串转换成字节数组。
2.2,char[] toCharArray():将字符串转换成字符数组。
2.3,static String valueOf(int i):将一个整数转换成字符串。
2.4,String toLowerCase():将字符串中的字符都转换成小写
2.5,String toUpperCase():将字符串的字符都转转换成大写
3,替换
3.1,String replace(char oldChar,char newChar):用新字符替换旧字符
3.2,String replace(String target,String replacement):用新的字符串替换旧的字符串
4,判断
4.1,boolean equals(Object anObject):判断两个字符串中的内容是否相同
4.2,boolean contains(String s):判断一个字符串是否包含另一个字符串
4.3, boolean startsWith(String suffix): 判断此字符串是否是以指定的字符串作为开头
4.4,boolean endsWith(String suffix): 判断此字符串是否是以指定的字符串作为结尾
5, 分割
5.1,String[] split(String regex):根据给定的正则表达式的匹配来拆分些这符串
5.2,String trim():去除字符串前后的空格
练习:给定一个字符串数组,按照字典顺序进行排序{"cba","def","awerk","ewodr"}
思路:将字符数组进行遍历,用字符串对象中提供的compareTo()方法直接进行比较
class Demo1
{
public static void main(String[] args)
{
String [] arr={"cba","def","awerk","ewodr"};
sop(arr);
stringSort(arr);
sop(arr);
}
public static void stringSort(String[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
int num=arr[x].compareTo(arr[y]);
if(num>0)
swap(arr,x,y);
}
}
}
public static void swap(String[] arr,int x,int y)
{
String temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
public static void sop(String[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
System.out.println();
}
}
StringBuilder与StringBuffer
因为String与String数组它们是不可变的,一旦创建就不会改变。所以有局限性,而StringBuffer和StringBuilder是一个容器,它们中的内容是可变的,可以通过append()方法往里添加各种类型的数据。
StringBuffer
(1)它和String的区别
它是缓冲区可变长度的。
(2)构造方法
StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer(int num) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
(3)常用方法
A:增加数据
append :添加各种类型的数据
insert : 在容器指定位置插入各种类型的数据。
B:删除数据
deleteCharAt : 删除指定位置的字符
delete 还可以用于清空StringBuffer的缓冲区
C:替换
replace
D:获取
charAt
E:长度和容量
length() 元素的个数
capacity 元素的理论值
F:获取元素的位置
indexOf
lastIndexOf
G:截取
substring(int start)
substring(int start,int end)
H:反转
reverse
(4)字符串和StringBuffer的转换
String-->StringBuffer通过构造:
如:StringBuffer sb = new StringBuffer(String str)
StringBuffer--String通过toString方法
如:StringBuffer sb = new StringBuffer();
sb.toString();
3:StringBuilder
和StringBuffer的功能是一样的,但是有区别:
StringBuffer(JDK1.0)是线程安全的(线程同步)。
StringBuilder(JDK1.5)不保证线程安全(线程不同步)。