zoukankan      html  css  js  c++  java
  • java --String、StringBuffer、StringBuilder

    一、String

     *1、String类型的值,会在方法去内存中存放,没有新的String类型的值,都会在方法区内存存放一份。

     *2、String值是不可更改的,如果要更改String类型的值,实际上不是修改,而是创建一个信息的String类型的值。

     *3、如果是new String()值,则会在方法区的字符串常量池+堆内存中都会有存放此String类型的值。

    二、StringBuffer

    * 1、StringBuffer是可变长度的,自动扩容。因为StringBuffer也是通过数组表示,所以其扩容其实还是创建新的数据,将原数组内容拷贝到新数组
    * 2、StringBuffer无参数构造方法,会调用super(16)所以,调用无参数构造方法时,默认创建空间的长度16个字符
    * 3、通过送具体的长度参数,这样就可以创建任意长度的字符空间
    * 4、对于String类型,频繁的拼接,会在字符串常量池创建大量的字符串,所以会占用大量空间。所以对于需要频繁拼接字符串时,建议通过StringBuffer来实现
    不要通过String来拼接
    * 5、StringBuffer与String没有继承关系,所以这两个引用数据类型不能直接转换,或者强制转换
    * 6、StringBuffer有重写toString方法,否则就会返回内存地址

    
    
    public class Test01
    {
        public static void main(String[] args) {
            
            //StringBuffer与String类没有继承关系,所以不能直接转换/强制类型转换
            //StringBuffer a = "abc";
            
            //StringBuffer正确的创建方式
            StringBuffer b = new StringBuffer("abc");
            System.out.println(b); //abc , StringBuffer有重写toString方法
            
            //String在字符串常量池中一段创建,不得修改
            String s1 = "abc";
            String s2 = s1.replace("a", "x");
            System.out.println(s1 == s2); //false(是两个地址)
            
            //StringBuffer的长度可变,在字符创常量池中创建后可以修改
            StringBuffer sb1 = new StringBuffer("abc");
            StringBuffer sb2 = sb1.append("123");
            System.out.println(sb1 == sb2); //true(是一个地址)
            
            //、大量字符串进行拼接时,尽量避免使用String,建议StringBuffer、StringBuilder
            //比如我们要查询的表1:user, 条件 where userid=1
            String table1 = "user";
            StringBuffer sqlSelect = new StringBuffer(100);
            
            sqlSelect = sqlSelect.append("select * from ").append(table1).append(" where userid =1"); 
            System.out.println(sqlSelect); //select * from user where userid =1
        }
    }
    
    

    StringBuffer常用方法

    参考一下被人的文章吧

    https://www.cnblogs.com/haitiansBlog/p/4889532.html

    三、StringBuilder

    ..后续完善

  • 相关阅读:
    poj 2186(强连通分量)
    zoj 3602
    STL string常用函数
    poj 2503 (map)
    poj 1161 walls
    poj 1164 dfs 位运算
    搭建Hadoop2.0(一)系统环境基本配置
    一步一个脚印——开启博客
    Javascript动态执行问题浅析
    input输入框的各种样式
  • 原文地址:https://www.cnblogs.com/jesse-zhao/p/10725764.html
Copyright © 2011-2022 走看看