zoukankan      html  css  js  c++  java
  • String类

    特点

         1.所有字符串的字面值常量("abc","123",..)都是一个String类的对象

         2.字符串一经初始化不可改变

           因为底层使用的是一个 final char[] value,该数组一经初始化,不可改变

         3.String str="abc";

           底层:"abc"装到底层的字符数组中value={'a','b','c'}

    StringBuffer/StringBuilder

    特点

        StringBuffer/StringBuilder 底层使用的是一个字符数组char[] value,往StringBuffer中添加的内容都会转换为字符添加到底层的字符数组中

         new StringBuffer(),底层开辟的字符数组长度为16,

        如果添加的元素超过16个,就会新开辟一个长度为 原有长度*2+2 的一个新的字符数组,把原有内容拷贝新数组中,把新添加的元素追加到新数组的元素的末尾

    StringBuffer/StringBuidler的方法

    append():

     a.不断的往缓冲区(字符数组)末尾追加字符

           b.apend()方法的返回的是追加了内容的缓冲区(原有字符数组)

           StringBuffer sb=new StringBuffer();

           sb.append("ab");//添加到底层的字符数组中char[] value={'a','b'}

           sb.append(1)//在添加到原有的字符数组中char[] value={'a','b'.'1'}

           //sb.append("ab").append(1);//因为返回的原有的StringBuffer对象,所以可以不断的调用下去

    reverse():将缓冲区中所有的字符反转

    toString():将缓冲区中所有的内容变成一整个字符串返回

     value:想缓冲区中添加的数据,最终都添加到value字符数组中

                 char[] value

          count:缓冲区中字符的个数  

          底层:new String(value, 0, count);//将value数组,从0索引开始,count个字符转换成字符串

               例如:new String({'a','b'},0,2);//相当于转换成"ab"

    StringBuffer与StringBuilder区别

        1.相同点:方法基本一致

        2.不同点:StringBuffer是线程安全的,但是效率低

                 StringBuilder是线程不安全,效率高

                 优先考虑StringBuilder

     d.字符串拼接

      

      String str="abc";
    
         str=str+"d";//str+"d"
    
                     //以上代码相当于:new StringBuilder("abc").append("d").toString();
    
                     //StringBuilder sb=new StringBuilder("abc");
    
                     //sb.append("d");//追加一个d
    
                     //sb.toString();//返回整个字符串new String({'a','b','c','d'},0,4);
    
                    //所有的+号拼接底层都是用StringBuilder完成
    
                    //str=str+"d";相当于:str=new String({'a','b','c','d'},0,4);
    
     
    
        String str2="abcd"//str2指向内存中的一个字符数组对象
    
        //str=new String({'a','b','c','d'},0,4);
    
        System.out.println(str2==str);//内存地址不同返回false
  • 相关阅读:
    Unity3D游戏高性能战争迷雾系统实现
    Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践
    怪异现象:执行静态方法,其类的静态构造函数没有执行
    MVC项目不同域之间的UrlRouting
    Quartz+TopShelf实现Windows服务作业调度
    MongoDB数据仓储
    Redis作为缓存服务器
    SignalR实现在线聊天室功能
    DDD-EF-数据仓储
    领域Command
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/9115249.html
Copyright © 2011-2022 走看看