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);
	}
}//拼接字符串性能对比

  

 

 

posted on 2020-05-18 22:39  星空6  阅读(207)  评论(0编辑  收藏  举报

导航