String类的特点:
String是常量创建的对象不能改变如果改变就创建新的对象
首先检查常量池中是否有该字符串,如果没有会创建
字符串对象一旦被初始化就不会被改变。
初始化一个String对象
1.String str1= "abc";
2.String str2 = new String();
3.String str3 = new String("abc");
String 类的常见操作
length() :获取字符串长度
charAt():获取字符
indexOf():位置索引
lastIndexOf():索引最后位置
替换和去空格操作
replace();
trim();
判断操作
startsWith();是否以xx开头
endWith();是否已xx结尾
contains();是否包含字符串xx
isEmpty();字符串是否为空
equals();两个字符串是否相等
截取与分割
subString();
split();
StringBuffer类(字符缓冲区)
StringBuffer和String最大的区别是它的内容和长度都是可以改变的
* StringBuffer:就是字符串缓冲区。
* 用于存储数据的容器。
* 特点:
* 1,长度的可变的。
* 2,可以存储不同类型数据。
* 3,最终要转成字符串进行使用。
* 4,可以对字符串进行修改。
StringBuffer sb = new StringBuffer();
sb.append("hhh");
sb.insert(2,"hhh");
sb.delete(1,5);
sb.deleteCharAt(2);
sb.setCharAt(1,'p');
sb.replace(1,3,"qq");
区别:
String类覆盖了Object类的equals()方法;
String类的操作符可以用操作符+进行连接
jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
-
不同的是:
-
StringBuffer是线程同步的。通常用于多线程。
-
StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
- jdk升级:
- 1,简化书写。
- 2,提高效率。
- 3,增加安全性。
字符串的排序
public static void main(String[] args) {
String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" };
printArray(arr);
sortString(arr);
printArray(arr);
}
public static void sortString(String[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if(arr[i].compareTo(arr[j])>0)//字符串比较用compareTo方法
swap(arr,i,j);
}
}
}
private static void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void printArray(String[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1)
System.out.print(arr[i] + ", ");
else
System.out.println(arr[i] + "]");
}
}
网友评论