Java中String,StringBuilder,和StringBuffer区别(2022.4.30)

String类的常用方法

String类中的常用的方法:

  • CharAt():获取单个字符,并且返回类型为 char;
  • toCharArray():将String转为字符数组;
  • toUpperCase():将字符串转化为大写;
  • startsWith(“参数1”,参数2):当传入一个参数的时候是判断是不是这个字符开头的,当传入两个参数时,判断第[x]个字符是不是x,返回 booean;
  • endsWith():判断字符串的结尾,返回结果为boolean;
  • contains():查找字符串是否存在,返回boolean;
  • indexOf():从头开始查找字符串,找到就返回0,否则就返回负1;
  • subString():截取字符串(从下标开始截到尾部);
  • split():拆分字符串;
  • length():表示字符串的长度;
  • isEmpty():判断字符串是否为空值。

方法的练习:

    package zhai.string;

    public class StringDemo3 {
        public static void main(String[] args) {
            String s = "xiaozhai";
            // charAt():获取单个字符(填入具体的下标)
            // 返回值是单个字符,所以使用 char 类型进行接收
            char c = s.charAt(4);
            System.out.println("通过charAt()获取单个字符:"+c);
            // toCharArray():讲 String 字符串转为数组
            char[] chars = s.toCharArray();
            // 遍历数组 输出字符串中的所有数据 并使用空格隔开
            for (int i = 0; i < chars.length ; i++) {
                System.out.print(chars[i]+" ");
            }
            System.out.println();
            System.out.println("通过toCharArray()方法转化为数组的结果是:"+new String(chars));
            System.out.println("通过toUpperCase()方法把字符串转换为大写的格式:"+s.toUpperCase());
            System.out.println("通过startsWith()传入一个参数的时候判断字符串是不是x开头的"+s.startsWith("x"));
            System.out.println("通过startsWith()方法传入两个参数的时候判断第0个字符串是不是为x:"+s.startsWith("x",1));
            System.out.println("通过endsWith()方法判断字符串是不是i结尾的:"+s.endsWith("i"));
            System.out.println("通过contains()方法查找字符串是否存在:"+s.contains("c"));
            int i = s.indexOf("e");
            System.out.println("通过indexOf()方法从从第一个元素往后面查找"+i);
            int i2 = s.lastIndexOf("x");
            System.out.println("通过lastIndexOf()方法从最后一个元素开始往前查找:"+i2);
            System.out.println("等等方法()....");
        }
    }
    输出:
        通过charAt()获取单个字符:z
        x i a o z h a i 
        通过toCharArray()方法转化为数组的结果是:xiaozhai
        通过toUpperCase()方法把字符串转换为大写的格式:XIAOZHAI
        通过startsWith()传入一个参数的时候判断字符串是不是x开头的true
        通过startsWith()方法传入两个参数的时候判断第0个字符串是不是为x:false
        通过endsWith()方法判断字符串是不是i结尾的:true
        通过contains()方法查找字符串是否存在:false
        通过indexOf()方法从从第一个元素往后面查找-1
        通过lastIndexOf()方法从最后一个元素开始往前查找:0
        等等方法()....

String,StringBuilder,StringBuffer区别:

String

1、String类:创建操作字符串,它的内部实现也是一个字节数,这个数组是被 final 修饰的,因此String是不可变的对象,每次在对字符串类进行更改的时候都会生成一个新的字符串对象,然后将指针指向新的字符串对象。

StringBuilder

2、StringBuilder类:它和String不同的是,StringBulider类的对象能够被多次修改,并且不产生新的对象。这个特性的意义在于,如果我们进行大量的字符串操作,使用String类的话就会产生很大的消耗,而StringBuilder就可以避免这个问题;但是它的弊端就是线程不安全。

StringBuffer

3、StringBuffer类:它和StringBuilder之间最大的区别是StringBuilder的方法线程安全;由于StringBuilder执行效率高于StringBuffer和String,所以通常使用StringBuilder,但是程序要是要求线程安全的情况下,则必须使用StringBuffer类。

练习:

    package zhai.string;
    
    public class StringDemo4 {
        public static void main(String[] args) {
            // 使用 String 进行执行
            int a = 100000;
            long timeMillis = System.currentTimeMillis();
            String s = "";
            for (int i = 0; i <a; i++) {
                s += i;
            }
            System.out.println("次数:"+a+" 耗时:"+(System.currentTimeMillis() - timeMillis));
    
            timeMillis = System.currentTimeMillis();
            StringBuffer stringBuffer = new StringBuffer();
            for (int i = 0; i < a ; i++) {
                stringBuffer.append(i);
            }
            System.out.println("次数:"+a+" 耗时:"+(System.currentTimeMillis() - timeMillis));
    
            timeMillis = System.currentTimeMillis();
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < a ; i++) {
                stringBuilder.append(i);
            }
            System.out.println("次数:"+a+" 耗时:"+(System.currentTimeMillis() - timeMillis));
        }
    }
    输出:
    	次数:100000 耗时:18026  // String 
    	次数:100000 耗时:16  // StringBuffer
    	次数:100000 耗时:0  // StringBuilder 执行效率

解析:很明显可以从代码执行结果得出,String执行最慢了而StringBuilder是执行最快的;注意:StringBuilder线程不安全但是效率高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值