• java StringBuffer;StringBuilder类


    字符串相关的包

    java.lang包 实现接口SerializableCharSequenceComparable

    String 非常特殊的类 可以像常量一样创建对象

      String str="abc"; 对象 char[] value

      String不可变特性

      频繁的修改其内容的时候 性能很不好

      内存存储 

    StringBuffer、StringBuilder

    1.所属的包 java.lang包

    2.继承AbstractStringBuilder 间接继承Object 实现接口 SerializableAppendableCharSequence

    StringBuffer、StringBuilder没有compareTo方法;

                含有String没有的方法 append();拼接

    3.特性

      可变字符串 char[] value; 动态扩容

    4.对象的构建

      无参数构造方法

      有参数构造方法

     5.StringBuilder中常用的方法

      最主要的方法append() 频繁的拼接字符串的时候使用此方法 提高性能

      capacity();//字符串底层char

     =======================================

    1.StringBuilder类不一定需要 是为了避免String频繁拼接修改信息的时候才用的;

      底层数组是可变的 提高了性能;

    2.常用方法

      与String类不同的独有方法

      append() insert() delete() deleteCharAt() reverse()

      与String类中同名的方法

      length() charAt() codePointAt() indexOf() lastIndexOf() replace()

      不是很常用的方法;

      ensureCapacity() capacity() setLength() trimToSize()(去掉多余空间) setCharAt()

    3.String家族 笔试中经常容易考察的知识点

      3.1String所属的包 继承关系 实现接口

        java.lang 继承Object 实现3个接口;

      3.2 String构建方式

        常量 构造方法

      3.3 String对象内存结构

        字符串常量区 new堆内存对象

        == equals()区别

        "a"+"b"+"c"

      3.4 String 不可变特性

          长度及内容

      3.5 String中常用方法

          concat(); toUpperCase();

      3.6 String和StringBuilder区别 

          String不可变字符串

            JDK1.0

            有一个接口Comparable

            不可变体现在长度及内容

            有一些方法另一个没有 concat compareTo toUpper

          StringBuilder可变字符串

            JDK1.5

            有一个接口Appendable

            可变字符串 没有final修饰 底层可以进行数组扩容

            有一些String没有 append() insert() delete() reverse()

        3.7 StringBuffer和StringBuilder的不同

            StringBuffer早期版本1.0

            Stringbuilder后来的版本1.5

            早期版本 线程同步 安全性比较高 执行效率相对较低

            后期版本 线程非同步 安全性比较低 执行效率相对较高     

     

    public class Test0518{
    	public static void main(String[] args){
    		//String str="a"; 
    		StringBuilder a=new StringBuilder("a");//17个长度
    		long time1=System.currentTimeMillis();
    		for(int i=1;i<=20000;i++){
    			//str+="a";//利用+拼接 589
    			//str.concat("a");// 3
    			a.append("a");//2
    		}
    		long time2=System.currentTimeMillis();
    		System.out.println(time2-time1);
    	}
    }//拼接字符串性能对比
    

      

     

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Thinkphp 模板中使用自定义函数的方法
    thinkphp 邮件发送
    str_replace使用
    SQL备份一张表的数据
    error: Allowed memory size
    LitJson使用
    implode,explode的使用
    ModelState.AddModelError使用
    HTTP 错误 404.2
    验证码显示不出来,在THINKPHP中的使用
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12913507.html
Copyright © 2020-2023  润新知