java里 String、StringBuffer 和 StringBuilder 详解

java里 String、StringBuffer 和 StringBuilder 详解,第1张

java里 String、StringBuffer 和 StringBuilder 详解

目录:
    • String类:
      • 字符串方法:
        • 测试代码:
      • 补充:
    • StringBuffer和StringBuilder:
      • 示例代码:
      • 与String效率比较:
    • 附:

String类:


字符串方法:

测试代码:
package com.oop.String;

import java.util.Arrays;

public class Demo01 {
    public static void main(String[] args) {
        String str = "zhangsan"; // zhangsan常量存储在字符串池中
        str = "xiaoye"; // 给字符串赋值时,并没有修改变量,而是重新开辟了一个空间
        String str2 = "xiaoye"; // 赋值时有则重复利用
        System.out.println(str);
        System.out.println(str2);

        // 字符串的另一种创建方式
        String str3 = new String("java"); // 在字符串池和堆里面分别创建一个对象
        String str4 = new String("java");
        System.out.println(str3==str4); // 这里是两个对象,== 比较的是地址,所以是false
        System.out.println(str3.equals(str4)); // String里面重写了equals方法,用equals比较的是数据


        System.out.println("字符串方法的使用:");

        String str5 = "I love you! love!!! LOVE love";
        System.out.println(str5.length()); // 输出字符串长度
        System.out.println(str5.charAt(0)); // 输出指定位置的字符
        System.out.println(str5.charAt(str5.length()-1));
        System.out.println(str5.contains("love")); // 是否含有某个子字符串
        System.out.println(str5.contains("her"));

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

        System.out.println(Arrays.toString(str5.toCharArray())); // 打印字符串对应的数组
        System.out.println(str5.indexOf("love")); // 打印指定字符串第一次出现的下标
        System.out.println(str5.indexOf("love", 6)); // 打印指定字符串出现的下标,从指定位置开始查找
        System.out.println(str5.lastIndexOf("love")); // 打印指定字符串最后一次出现的下标

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

        String string = "  Hello World    ";
        System.out.println(string.trim()); // 去掉字符串前后的空格
        System.out.println(string.toUpperCase()); // 把小写转换成大写
        System.out.println(string.toLowerCase()); // 把大写转换成小写
        System.out.println(str5.endsWith("love")); // 判断是否以指定字符串结尾
        System.out.println(str5.startsWith("I")); // 判断是否以指定字符串开头

        System.out.println("==========================");
        System.out.println(str5.replace("love", "hate")); // 用新的字符或字符串替换旧的
        String string2 = "My,, name, is xiaoye";
        String[] strings = string2.split("[, ]+"); // 用出现一次或者多次的逗号或者空格分割字符串,返回一个数组 [,空格]+
        for (String s : strings) {
            System.out.println(s);
        }
    }
}

运行结果:

补充:
package com.oop.String;

public class Demo02 {
    public static void main(String[] args) {
        // 补充两个方法 equals() 和 comparTo()
        String string1 = "Hello";
        String string2 = "hello";
        System.out.println(string1.equalsIgnoreCase(string2)); // equals忽略大小写的比较

        String string3 = "abc"; //98
        String string4 = "ayz"; //121
        System.out.println(string3.compareTo(string4)); // 依次比较字符串中的字符在编码表中的位置 相减 string3 - string4 :b-y

        String string5 = "abcd";
        String string6 = "abcdef";
        System.out.println(string5.compareTo(string6)); // 这种情况比较长度 4-6
    }
}

运行结果:

StringBuffer和StringBuilder:

示例代码:
package com.oop.String;

public class Demo03 {
    public static void main(String[] args) {
        // StringBuffer、StringBuilder与String相比,效率更高(StringBuilder > StringBuffer > String),节省内存

        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("xiao"); // append()追加
        System.out.println(stringBuffer.toString());
        stringBuffer.append("ye");
        System.out.println(stringBuffer);
        stringBuffer.insert(0, "one "); // insert() 添加
        System.out.println(stringBuffer);
        stringBuffer.replace(0, 3, "love"); // replace() 替换
        System.out.println(stringBuffer);
        stringBuffer.delete(0,5); // 删除
        System.out.println(stringBuffer);
        stringBuffer.delete(0, stringBuffer.length()); // 清空
        System.out.println(stringBuffer.length());
    }
}

运行结果:

与String效率比较:
package com.oop.String;

public class Demo04 {
    public static void main(String[] args) {
        String string = "";
        long start =  System.currentTimeMillis(); // 开始时间
        System.out.println(start);
        for (int i = 0; i < 99999; i++) {
            string += i;
        }
        long end = System.currentTimeMillis(); // 结束时间
        System.out.println(end);
        System.out.println(string);
        System.out.println((end - start) + "ms");

        // 使用StringBuilder增加效率
        StringBuilder stringBuilder = new StringBuilder();
        long start2 =  System.currentTimeMillis(); // 开始时间
        System.out.println(start2);
        for (int i = 0; i < 99999; i++) {
            stringBuilder.append(i);
        }
        long end2 = System.currentTimeMillis(); // 结束时间
        System.out.println(end2);
        System.out.println(stringBuilder);
        System.out.println((end2 - start2) + "ms");
    }
}

运行结果:

附:

最后附上我学习的良心视频链接:Java常用类视频链接
——————————————————————————————
—————————————————
——————

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5660814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存