Java常用类:String
String
- 字符串是常量,创建之后不可改变,修改变量的赋值不是修改字符串,而是将变量指向新创建的字符串
- 字符串字面值存在字符串池中,可以共享,JDK8后字符串池在堆中
- 创建字符串变量:
String s = "H";产生一个对象,字符串池中存储String s = new String("H");产生两个对象,堆、池中各存储一个。堆中存储new的对象,指向字符串池的字符串,浪费空间
- 在对字符串进行比较时使用
equals(),String重写了equals方法
String str = new String("H");
String str2 = new String("H");
System.out.println(str==str2);//false,比较的是对象的地址
System.out.println(str.equals(str2));//true,比较字符串的内容
常用方法
length():返回字符串的长度
test.length()//10
charAt(int index):返回某个位置的字符,下标越界会报错
test.charAt(4)//是
contains(String str):是否包含某个字符串
test.contains("java")//true
toCharArray():将字符串转换成数组
Arrays.toString(test.toCharArray();//[j, a, v, a, 是, 最, 好, 的, 语, 言]
indexOf(String str, n):(从索引n开始)查找str首次出现的下标,存在返回下标,不存在返回-1
test.indexOf("java")//0
LastIndexOf(String str, n):(从索引n开始)查找str最后一次出现的下标,存在返回下标,不存在返回-1
test.lastIndexOf("b")//-1
trim():去掉字符串前后的空格toUpperCase():小写转大写toLowerCase():大写转小写endWith(String str):判断字符串是否以str结尾startWith(String str):判断是否以str开头- replace(char oldChar, char newChar):将旧字符串替换成新字符串
test.replace("java","python")//python是最好的语言
-
split(String str):根据str做拆分spilt(" "):按照空格拆分[]表示选择其中的内容,可以用[]中的其中一个内容进行拆分+代表切分符号可以出现多个但只切分一次
String s = "java is the best programing language, php not";
String[] arr = s.split("[ ,]+");//[]表示选择其中的内容,可以用空格或逗号拆分;+代表切分符号可以出现多个但只切分一次
for (String string : arr) {
System.out.println(string);
}
//输出
java
is
the
best
programing
language
php
not
equals():比较字符串的内容是否相同equalsIgnoreCase():忽略大小写的比较compareTo():按照字典表的顺序比较大小
String s3 = "xdfg";
String s4 = "asdzb";
System.out.println(s3.compareTo(s4));//23首字母的序号差值,正数则s3>s4
当进行比较的两个字符串的长度不同,但较短的字符串的内容和较长的前部完全相同时,比较的是字符串的长度
String s5 = "asd";
String s6 = "asdfg";
System.out.println(s5.compareTo(s6));//-2,返回值是字符的长度差,相等时为0
substring(int beginIndex, int endIndex):切片
可变字符串
StringBuffer:可变长字符串,JDK1,运行效率慢,线程安全StringBuilder:可边长字符串,JDK5,运行效率快,线程不安全- 和
String的区别:- 效率更高
- 节省内存
方法(StringBuffer和StringBuilder通用)
append(内容):追加各种类型的内容insert(int offset, 内容):在指定索引处插入内容replace(int start, int end, 替换内容):在指定位置进行替换delete(int start, int end):删除索引中的内容delete(0, str.length()):清空内容
效率验证
public static void main(String[] args) {
//开始时间
long start = System.currentTimeMillis();
//String 312
// String string = "";
// for (int i = 0; i < 9999; i++) {
// string+=i;
// }
// System.out.println(string);
//StringBuilder:3
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 9999; i++) {
sb.append(i);
}
System.out.println(sb.toString());
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
}

浙公网安备 33010602011771号