首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于字符串

关于字符串

作者头像
在水一方
发布2022-06-14 15:36:05
发布2022-06-14 15:36:05
2010
举报
文章被收录于专栏:在水一方在水一方

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

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

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

测试demo

代码语言:javascript
复制
        @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 线程不安全,效率高

代码语言:javascript
复制
    @Test
    public void stringDemo1(){
      StringBuilder stringBuilder =new StringBuilder("1232323232");
        stringBuilder.append("ccccc");
        System.out.println(stringBuilder);
    }
打印结果:1232323232ccccc

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

代码语言:javascript
复制
String str = "start";
for (int i = 0; i < 100; i++) {
 str = str + "hello";
}

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

StringBuildre的建造者模式

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试demo
  • StringBuildre的建造者模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档