第三周总结

本周继续学Java

StringBuilder

复制代码
public class demo11 {
    public static void main(String[] args) {
        //StringBuilder可以看作为一个容器,创建之后里面内容可变
        //1.创建对象
        StringBuilder sb = new StringBuilder();
        //StringBuilder sb = new StringBuilder("abc");

        //2.添加元素
        sb.append("abc");
        sb.append("ABC");
        sb.append("软萌小鲨鱼");


        //3.反转
        sb.reverse();
        System.out.println(sb);

        //获取长度
        int lenth = sb.length();
        System.out.println(lenth);

        //变回字符串
        String str = sb.toString();
        System.out.println(str);


    }
}
复制代码
public class demo12 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("aaa").append("bbb").append("ccc");
        System.out.println(sb);
    }
}

StringJoiner

JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。

在拼接的时候,可以指定间隔符号,开始符号,结束符号。

复制代码
public class demo15StringJoiner {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5,};
        StringJoiner sj = new StringJoiner("---", "[", "]");
        Stringstr=
        sj.add("1").add("2").add("3").add("4").add("5").toString();
        System.out.println(str);


    }
}
复制代码

字符串原理小结

扩展底层原理1:字符串存储的内存原理

●直接赋值会复用字符串常量池中的

●new出来不会复用,而是开辟一个新的空间

扩展底层原理2: ==号比较的到底是什么?

●基本数据类型比较数据值

●引用数据类型比较地址值

扩展底层原理3:字符串拼接的底层原理

●如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。

●如果有变量参与,会创建新的字符串,浪费内存。

扩展底层原理4: StringBuilder提 高效率原理图

●所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

扩展底层原理5: StringBuilder源码分析

●默认创建一-个长度为16的字节数组

●添加的内容长度小于16,直接存.

●添加的内容大于16会扩容(原来的容量*2+2 )

●如果扩容之后还不够,以实际长度为准

posted @   漏网鲨鱼  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示