java字符串

静态固定序列String

1、String字符串定义:

String s = new String("abc");

创建了两个String对象,第一个是"abc",第二个创建了新的对象,并将“abc”传入构造函数。这样没有必要,且降低了性能。String s = "abc";

 

2、String字符串连接(生成另一个新的字符串):

(1)concat函数。exp:"a".concat("b");

(2)+连接。exp:"a"+"b";

 

3、String字符串对象不可改变性,长度、内容等等。

 

动态可变序列StringBuffer、StringBuilder

StringBuffer

1、StringBuffer定义:

StringBuffer sb = new StringBuffer(~);//参数含诸多类型

 

2、添加字符串+转换成String对象

sb.append("~").toString();//还有insert(长度,插入字符)

 

3、线程安全,多线程适用

 

StringBuilder

1、StringBuilder定义:

StringBuilder sb = new StringBuilder(~);//参数含诸多类型

 

2、添加字符串+转换成String对象

sb.append("~").toString();//还有insert(长度,插入字符)

 

3、线程不安全,单线程适用速度快

 

执行速度上:StringBuilder>StringBuffer>String;对象上:StringBuilder和StringBuffer是可变对象,基于同一对象操作;String则需另外创建对象。

 

String的性能特别关键。为了最小化内存的消耗,String类使用了一个字符池。主要思想:若两个String对象包含了相同的字符,那么这些字符共享同样的内存空间(字符池)。字符池实现了享元(Flyweight)设计模式。享元模式基于分享,目标是有效地处理大量的细粒度的对象。故必须用equals方法比较字符串对象。

 

 

 

 

 

 

 

猜你喜欢

转载自wwy0612.iteye.com/blog/2318965