• Java基础 String/StringBuff/StringBuilder 常用操作方法复习/内存分析/三者的效率比较


    附:jdk1.8使用IDEA安装.创建.使用JUnit单元测试

    笔记总结:

     1 /**String 复习
     2  * 1.像C++这样的char arr[]="..." 的方式无法声明Java的String
     3  * 2.a.compareTo(b),表示按字典序比较两个字符串a和b,结果小于0:a表示小于b,结果大于0:a表示大于b,结果等于0表示等于(值不确定)
     4  * 3.equals() 判断相等
     5  * 4.indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。
     6  *         lastindexOf(String str) 返回指定子字符串在此字符串中最后一次出现处的索引。
     7  *5.valueof()可以将基本所有的Java数据类型转换为String 类
     8  *
     9  * 6.StringBuff 类,支持 append(), legth() , insert(),reverse()
    /**StringBuffer
     *  线程安全,可变的字符序列。 字符串缓冲区就像一个String ,但可以修改。 (初始化是16个字符)
     *  在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。
     *  ---------------------------
     *StringBuilder 
        同样可变的字符序列,较新,效率远高于String ,高于StringBuffer!

    简单的方法测试代码:

    package Coding;
    
    public class Main_of_Coding {
        public static void main(String[] args) {
            //1.String 的构造方法
            String str1=new String("first String");
            char arr[]= {'s','e','c','o','n','d',' ','S','t','r','i','n','g'};
            String str2=new String(arr);
            String str3=new String(arr,1,4);  //起始点offset: 1 ,总统计count : 4
            String str4=new String(str1+1);  //数字1不表示移动地址,表示数字1加到str1的后面
            System.out.println(" "+str1+"	2: "+str2+"	:3 "+str3+"	:4"+str4);
            //2.使用
            str4=str1+str2;System.out.println(str4);  //字符串链接
            System.out.println(str1.charAt(0)+"  "+str1.charAt(1));  //获取第i个字符!
    
            str1="aab";str2="ac";
            System.out.println(str1.compareTo(str2)); //   按字典顺序比较两个字符串。
            str1="666";str2="777";
            System.out.println(str1.compareTo(str2));
            //3.转换成字符数组
            char a1[]=str1.toCharArray();
            System.out.println(new String(a1)+" 1:"+a1[1]+" 2:"+a1[2]);
            //4.字符串搜索
            System.out.println("indexof66: "+str1.indexOf("66"));
            System.out.println("lastindexof66: "+str1.lastIndexOf("66"));
            //
    
        }
    }

    运行结果:

     first String    2: second String    :3 econ    :4first String1
    first Stringsecond String
    f  i
    -2
    -1
    666 1:6 2:6
    indexof66: 0
    lastindexof66: 1
    对比三者的效率测试:
    public class testStringBuff {
        //对比三者的效率测试
        @Test
        public void test3(){
            String text = "";
            long startTime = 0L;
            long endTime = 0L;
            StringBuffer buffer = new StringBuffer("");
            StringBuilder builder = new StringBuilder("");
            System.out.println("三者同时添加20000个数花费的时间比较!!");
            startTime = System.currentTimeMillis();
            for(int i = 0;i<20000;i++){
                buffer.append(String.valueOf(i));}
            endTime = System.currentTimeMillis();
            System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
            startTime = System.currentTimeMillis();
            for(int i = 0;i<20000;i++){
                builder.append(String.valueOf(i));}
            endTime = System.currentTimeMillis();
            System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
            startTime = System.currentTimeMillis();
            for(int i = 0;i<20000;i++){
                text = text + i;}
            endTime = System.currentTimeMillis();
            System.out.println("String的执行时间:"+(endTime-startTime));
    
        }
    }

    测试结果:

    三者同时添加20000个数花费的时间比较!!
    StringBuffer的执行时间:10
    StringBuilder的执行时间:3
    String的执行时间:967




    你不逼自己一把,你永远都不知道自己有多优秀!只有经历了一些事,你才会懂得好好珍惜眼前的时光!
  • 相关阅读:
    selenium-使用xpath结合text内容定位元素
    pip 安装第三方库报错解决方法
    本地使用git拉取远程指定分支代码
    Python之字符串格式化(format)
    Python之字符串format格式化
    Python中的eval()函数
    用PIL实现滤镜(一)——素描、铅笔画效果
    python勾画图片轮廓
    用python读取带密码的excel文件中的数据
    python中的列表与列表推导式
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9778079.html
Copyright © 2020-2023  润新知