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,比较字符串的内容

常用方法

  1. length():返回字符串的长度
test.length()//10
  1. charAt(int index):返回某个位置的字符,下标越界会报错
test.charAt(4)//是
  1. contains(String str):是否包含某个字符串
test.contains("java")//true
  1. toCharArray():将字符串转换成数组
Arrays.toString(test.toCharArray();//[j, a, v, a, 是, 最, 好, 的, 语, 言]
  1. indexOf(String str, n):(从索引n开始)查找str首次出现的下标,存在返回下标,不存在返回-1
test.indexOf("java")//0
  1. LastIndexOf(String str, n):(从索引n开始)查找str最后一次出现的下标,存在返回下标,不存在返回-1
test.lastIndexOf("b")//-1
  1. trim():去掉字符串前后的空格
  2. toUpperCase():小写转大写
  3. toLowerCase():大写转小写
  4. endWith(String str):判断字符串是否以str结尾
  5. startWith(String str):判断是否以str开头
  6. replace(char oldChar, char newChar):将旧字符串替换成新字符串
test.replace("java","python")//python是最好的语言
  1. 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
  1. equals():比较字符串的内容是否相同
  2. equalsIgnoreCase()忽略大小写的比较
  3. 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
  1. substring(int beginIndex, int endIndex):切片

可变字符串

  • StringBuffer:可变长字符串,JDK1,运行效率慢,线程安全
  • StringBuilder:可边长字符串,JDK5,运行效率快,线程不安全
  • String的区别:
    • 效率更高
    • 节省内存

方法(StringBuffer和StringBuilder通用)

  1. append(内容):追加各种类型的内容
  2. insert(int offset, 内容):在指定索引处插入内容
  3. replace(int start, int end, 替换内容):在指定位置进行替换
  4. delete(int start, int end):删除索引中的内容
  5. 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));
}
posted @ 2022-03-27 18:53  chachan53  阅读(24)  评论(0编辑  收藏  举报