常用类 第4天(String概述,String常用方法,StringBuffer和StringBuilder)

1. String概述

  • 字符串是常量,创建之后不可改变
  • 字符串字面值存储在字符串池中,可以共享
  • String string = “ABC”; 产生一个对象,字符串池中存储
  • String string = new String(“ABC”); 产生两个对象,堆、池各存储一个
public class Test {
    public static void main(String[] args) {
        // 常量存储在字符串池中
        String string1 = "ABC";

        // 给字符串赋值时,没有修改数据,而是在字符串池中重新开辟空间
        string1 = "qwe";

        String string2 = new String("ABC");
    }
}

2. String常用方法

  • public int length():返回字符串的长度
  • public char charAt(int index):根据下标获取字符
  • public boolean contains(String string):判断当前字符串中是否包含string
public class Test {
    public static void main(String[] args) {
        String string1 = "ABCD";
        System.out.println(string1.length());
        System.out.println(string1.charAt(2));
        System.out.println(string1.contains("BC"));
    }
}
  • public char[] toCharArray():将字符串转换成数组
  • public int indexOf(String string):查找string首次出现的下标,存在则返回该下标,不存在则返回-1
  • public int lastIndexOf(String string):查找字符串在当前字符串中最后一次出现的下标索引
public class Test {
    public static void main(String[] args) {
        String string1 = "ABCBCD";
        System.out.println(string1.toCharArray());
        System.out.println(string1.indexOf("BC"));
        System.out.println(string1.indexOf("BC", 2));
        System.out.println(string1.lastIndexOf("BC"));
    }
}
  • public String trim():去掉字符串前后的空格
  • public String toUpperCase():将小写转成大写
  • public boolean endWith(String string):判断字符串是否以string结尾
public class Test {
    public static void main(String[] args) {
        String string1 = " AbCD";
        System.out.println(string1.trim());
        System.out.println(string1.toUpperCase());
        System.out.println(string1.endWith("CD"));
    }
}
  • public String replace(char OldChar, char NewChar):将旧字符/字符串替换成新字符/字符串
  • public String[] split(String string):根据string做拆分
  • public boolean equals(String string):比较给出的字符串与原字符串是否相同
  • public int compareTo(String string):计算给出的字符串与原字符串按照顺序第一个不同字符之间的差值,如果完全一致但有多出的字符,便计算字符串长度的差值
public class Test {
    public static void main(String[] args) {
        String string1 = "ABCDE";
        String string2 = "ABC";

        for (Object i : string1.split("A")) {
            System.out.println(i);
        }

        System.out.println("*********");

        for (Object i : string1.split("[AB]")) {
            System.out.println(i);
        }

        System.out.println("*********");

        for (Object i : string1.split("[AB]+")) {
            System.out.println(i);
        }

        System.out.println(string1.equals(string2));
        System.out.println(string1.equalsIgnoreCase(string2));

        System.out.println(string1.compareTo(string2));

    }
}

3. StringBuffer和StringBuilder

  • StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全
    • append():追加
    • insert():添加
    • replace():替换
    • delete():删除
public class Test {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer();

        // append():追加
        stringBuffer.append("ABC");
        stringBuffer.append("abc");

        // insert():添加
        stringBuffer.insert(0, "123");

        // replace():替换
        stringBuffer.replace(0, 3, "246");

        // delete():删除
        stringBuffer.delete(0, 3);

        System.out.println(stringBuffer);

    }
}
  • StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全
    • append():追加
    • insert():添加
    • replace():替换
    • delete():删除
public class Test {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();

        // append():追加
        stringBuilder.append("ABC");
        stringBuilder.append("abc");

        // insert():添加
        stringBuilder.insert(0, "123");

        // replace():替换
        stringBuilder.replace(0, 3, "246");

        // delete():删除
        stringBuilder.delete(0, 3);

        System.out.println(stringBuilder);

    }
}
  • 与String的区别:
    • 效率比String高
    • 比String节省内存
public class Test {
    public static void main(String[] args) {
        long start1 = System.currentTimeMillis();
        String string1 = "";
        for (int i = 0; i < 5000; i++) {
            string1 += i;
        }
        System.out.println(string1);
        long end1 = System.currentTimeMillis();
        System.out.println(end1 - start1);


        long start2 = System.currentTimeMillis();
        StringBuffer string2 = new StringBuffer();
        for (int i = 0; i < 5000; i++) {
            string2.append(i);
        }
        System.out.println(string2);
        long end2 = System.currentTimeMillis();
        System.out.println(end2 - start2);


        long start3 = System.currentTimeMillis();
        StringBuilder string3 = new StringBuilder();
        for (int i = 0; i < 5000; i++) {
            string3.append(i);
        }
        System.out.println(string3);
        long end3 = System.currentTimeMillis();
        System.out.println(end3 - start3);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值