String和StringBuilder的区别

为君一笑 提交于 2020-03-02 10:30:01

String和StringBuilder的区别(详细)

总的来说吧,String类的内容是不可变的,StringBuilder的内容是可变的

有好长一段时间都很迷这个String和StringBuilder之间的区别,我想着大家详细介绍一下。
他们之间最主要的区别在于对字符串拼接的处理:

  • String在做字符串拼接的时候,不会覆盖掉原来的字符串,原先的字符串还在堆内存里占用着内存,这样一来,拼接的多了,会产生更多的垃圾对象,占去大量内存,现在公司里在拼接字符串这个问题都不采用String,而是采用StringBuilder。
  • StringBuilder解决了字符串拼接问题,他所拼接的字符串,会自动覆盖上一级,不会产生多余的垃圾,不会占用太多内存。
  • StringBuilder的基本语法
StringBuilder sb = new StringBuilder();
  • StringBuilder – append()方法 reverse()反转
 //创建对象
        StringBuilder sb = new StringBuilder();

        //public StringBuilder append(任意类型):添加数据,并返回对象本身
//        StringBuilder sb2 = sb.append("hello");
//
//        System.out.println("sb:" + sb);
//        System.out.println("sb2:" + sb2);
//        System.out.println(sb == sb2);

//        sb.append("hello");
//        sb.append("world");
//        sb.append("java");
//        sb.append(100);

        //链式编程
        sb.append("hello").append("world").append("java").append(100);

        System.out.println("sb:" + sb);

        //public StringBuilder reverse():返回相反的字符序列
        sb.reverse();
        System.out.println("sb:" + sb);
  • String与StringBuilder之间的转换

  • StringBuilder转换为String

    ​ public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String

  • String转换为StringBuilder

    ​ public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder

/*
        //StringBuilder 转换为 String
        StringBuilder sb = new StringBuilder();
        sb.append("hello");

        //String s = sb; //这个是错误的做法

        //public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
        String s = sb.toString();
        System.out.println(s);
        */

        //String 转换为 StringBuilder
        String s = "hello";

        //StringBuilder sb = s; //这个是错误的做法

        //public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
        StringBuilder sb = new StringBuilder(s);

        System.out.println(sb);
  • StringBuilder常用方法
    方法名 说明
    public StringBuilder append (任意类型) 添加数据,并返回对象本身public StringBuilder reverse() 返回相反的字符序列
    public int length() 返回长度,实际存储值
    public String toString() 通过toString()就可以实现把 StringBuilder转换为String
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!