黑马程序员----字符串
2015-06-10 21:21
399 查看
——- android培训、java培训、期待与您交流! ———-
String
特点:
1.字符串对象一旦被初始化就不能改变。
2.String类加载时,会在内存中开辟缓冲区(字符串常量池),当通过
JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)
String类提供了多个构造方法,可以通过byte数组,char数组,StringBuffer对象,StringBuilder对象,String对象作为参数创建字符串。
String类提供了许多操作字符串的方法,常用方法有:
StringBuffer:线程安全的可变字符序列。
一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。
特点:
1.长度可变
2.可以存储不同类型的数据
3.最终要转成字符串进行使用
构造方法
当容量不足是会自动增加,为提高效率,当容量确定是可使用第三个构造方法。
常用操作:
添加:
删除:
查找:
修改:
其他:
StringBuilder
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
将 StringBuilder 的实例用于多个线程是不安全的。 如果实例只用于一个线程,建议用StringBuilder。如果需要这样的同步,则建议使用 StringBuffer。
用法和StringBuffer相同。
String
特点:
1.字符串对象一旦被初始化就不能改变。
2.String类加载时,会在内存中开辟缓冲区(字符串常量池),当通过
String s = "sting";方式创建字符串对象时,会将创建的字符串存储在字符串常量池中,下次通过此方式创建字符串时,会首先在常量池中查找,如果有就直接使用,没有才创建。而通过
String s = new String("string");创建的对象会存储在堆内存中,此方式会创建两个字符串,一个存储在队中,而构造方法中传递的参数也是一个字符串,并且会存储在字符串常量池中。所以:
JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)
String s = "string"; String s1 = "string"; String s2 = new String("string"); s == s1;//true s == s2;//false s.equals(s2);//true
String类提供了多个构造方法,可以通过byte数组,char数组,StringBuffer对象,StringBuilder对象,String对象作为参数创建字符串。
String类提供了许多操作字符串的方法,常用方法有:
char charAt(int index)//取字符串中指定位置的字符,index从0开始计算。 String concat(String str)//连接字符串,等同于 “+”; boolean contentEquals(StringBuffer buffer)//若二者包含的字符序列相同时就返回true; boolean equals(Object obj)//将该字符串与指定对象比较,若二者包含的字符序列相等返回true; boolean equalsIgnoreCase(String anotherString)//将此 String 与另一个 String 比较,不考虑大小写; byte[] getBytes()//将该字符串转换成byte数组; int indexOf(String str)//找出str字符串在该字符串中第一次出现的位置; int indexOf(String str, int fromIndex)//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始; int lastIndexOf(String str)//返回指定子字符串在此字符串中最后一次出现处的索引; int length()//返回当前字符串长度; String replace(char oldChar, char newChar)//返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 String replaceAll(String regex, String replacement)//使用给定的 字符串replacement 替换此字符串所有的regex字符串; boolean startsWith(String prefix)//测试此字符串是否以指定的前缀开始. String[] split(String regex)//把字符串按指定的字符串分隔开。 String substring(int beginIndex)//返回一个新的字符串,从beginIndex开始截取,它是此字符串的一个子字符串; String substring(int beginIndex, int endIndex)//返回一个新字符串,它是此字符串的一个子字符串; char[] toCharArray()//将此字符串转换为一个新的字符数组。 String toLowerCase()//将此 String 中的所有字符都转换为小写; String toUpperCase()//转成大写; static String valueOf(基本类型 obj)//把基本类型值转成字符串; String trim()//忽略字符串前导空白和尾部空白。
StringBuffer:线程安全的可变字符序列。
一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。
特点:
1.长度可变
2.可以存储不同类型的数据
3.最终要转成字符串进行使用
构造方法
StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(CharSequence seq)构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
当容量不足是会自动增加,为提高效率,当容量确定是可使用第三个构造方法。
常用操作:
添加:
append(参数列表)在末尾添加内容
insert(参数列表)在中间添加内容
删除:
StringBuffer delete(int start, int end)移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index)移除此序列指定位置的 char。
查找:
charAt(int index)返回此序列中指定索引处的 char 值。
indexOf(String str, int fromIndex)从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
lastIndexOf(String str, int fromIndex)返回最后一次出现的指定子字符串在此字符串中的索引。
修改:
StringBuffer replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。
setCharAt(int index, char ch)将给定索引处的字符设置为 ch。
其他:
setLength(int newLength)设置字符序列的长度。
Buffer reverse()将此字符序列用其反转形式取代。
StringBuilder
(public final class StringBuilderextends Objectimplements Serializable, CharSequence)
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
将 StringBuilder 的实例用于多个线程是不安全的。 如果实例只用于一个线程,建议用StringBuilder。如果需要这样的同步,则建议使用 StringBuffer。
用法和StringBuffer相同。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- String.intern
- 开发人员、程序员与计算机科学家三者之间的区别
- 程序员必备,程序员四大忌
- 程序员们,做好你手里的俩份试卷
- Prototype源码浅析 String部分(二)
- 程序员必备的10大健康装备! 我们要工作更要健康!
- Ruby中的String对象学习笔记
- 一篇关于程序员性格的文章第1/3页
- PostgreSQL ERROR: invalid escape string 解决办法
- 8种类型极品程序员,不知你属于哪一种?
- 程序员编程从初级到中级的10个秘诀
- 做一个优秀程序员应该知道的15件事
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- 程序员开发项目是选择效率还是质量呢?