目 录CONTENT

文章目录

关于字符串

在水一方
2022-01-29 / 0 评论 / 0 点赞 / 938 阅读 / 1,091 字 / 正在检测是否收录...

实际项目中和字符串相关的操作是非常频繁的,常见的有字符串类有String、StringBuffer、StringBuilder对于它们之间的使用方面是需要去理解的

一、String类
String类用来定义字符串常量,java中String类是设计成只读,典型的immutable对象,对它的任何改动其实都是创建了一个新的对象,然后将引用指向该对象,String对象在赋值之后会缓存在常量池中,如果下次申请创建对象时,如果缓存中已经存在,则直接返回引用给创建者

字符串的创建时由堆类分配内存(创建的对象是存储在堆里面)

测试demo


        @Test
        public void stringDemo(){
            String a = new String("ab");
            String b = new String("ab");
            String aa = "ab"; //放在常量池中
            String bb = "ab"; // 从常量池中查找
            System.out.println(aa.equals(bb)); // true
            System.out.println(aa==bb); // true
            System.out.println(a.equals(aa)); // true
            System.out.println(a==aa); //false 非同一对象
        }

二、StringBuffer
线程安全的,方法由synchronized关键字修饰

三、StringBuilder
线程不安全,效率高


    @Test
    public void stringDemo1(){
      StringBuilder stringBuilder =new StringBuilder("1232323232");
        stringBuilder.append("ccccc");
        System.out.println(stringBuilder);
    }
打印结果:1232323232ccccc

【推荐】循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展,以下这种方式不推荐

String str = "start";
for (int i = 0; i < 100; i++) {
 str = str + "hello";
}

说明:如果你需要一个可修改的字符串,应该使用 StringBuffer 或者 StringBuilder。否则会有大量时间浪费在垃圾回收上,因为每次试图修改都有新的 string 对象被创建出来

StringBuildre的建造者模式

问题:如何进行源码分析???

0

评论区