黑马程序员-String、StringBuffer和StringBuilder

来源:互联网 发布:淘宝开店怎么收费标准 编辑:程序博客网 时间:2024/04/20 03:06
---------------------- ASP.Net+Android+IOS开发</a>、.Net培训、期待与您交流! ----------------------


String、StringBuffer和StringBuilder

字符串就是一连串的字符序列,Java提供了String和StringBuffer、StringBuilder三个类来封装字符串

String类是不可变的,一旦一个String对象被创建,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁

StringBuffer对象则代表一个字符序列可变的字符串,最终用toString方法将其转换为一个Sting对象

jdk1.5新增了一个StringBuilder类,用于替代StringBuffer,StringBuilder是不同步的,StirngBuffer线程同步


String

Constructor:
String()    //创建一个包含0个字符串序列的String对象(并不是返回null)
String(byte[] bytes)    //使用平台默认字符集将bytes数组解码,返回字符串
String(byte[] bytes, Charset charset)    //使用指定字符集将bytes数组解码,返回字符串
String(byte[] bytes, int offset, int length)    //使用平台默认字符集从byte数组的offset开始,长度为lenght的子数组解码,返回字符串
String(char[] value, int offset, int count)
String(String original)    //根据字符串创建其副本
String(StringBuffer buffer)    //根据StringBuffer对象来创建对应的String对象
String(StringBuilder builder)

Method:
char charAt(int index)    //取字符串中指定位置的字符
int compareTo(String anotherString)    //从第0个字符开始比较,所有对应字符都相同,返回0,否则返回字符差
boolean equals(Object anObject)
boolean equalsIgnoreCase(String str)    //忽略大小写比较
boolean endsWith(String str) //该String对象是否以str结尾
byte[] getBytes()    //将String对象转换成字节数组
void getChars(int srcBegin, int srcEnd, char[] det, int detBegin)    //将字符串从srcBegin开始,srcEnd结束部分复制到dst字符数组中,其中dstBegin为目标字符数组的起始复制位置
int indexOf(int ch)    //返回ch的索引
int indexOf(int ch, int fromIndex)    //找出ch字符在该字符串中从fromIndex开始后第一次出现的位置
int indexOf(String str)
int indexOf(String str, int fromIndex)
int length()    //返回字符串长度
String replace(char oldChar, char newChar)    //将字符串中第一个oldChar替换成newChar
String[] split(String regex)    //以regex分隔字符串,并放到字符串数组中,如何没有regex,返回原字符串
boolean startsWith()    //该String对象是否以prefix开始
String substring(int beginIndex)    //取从beginIndex位置开始到结束的子字符串
String substring(int begingIndex, int endIndex)    //包头不包尾
char[] toCharArray()    //将该String对象转换成char数组
String toLowerCase()    //将字符串转换成小写


常量池(constant pool)

常量池指的是在编译期被确定、并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,也包括字符串常量

String s0 = "hello";String s1 = "hello";String s2 = "he"+"llo";System.out.println(s0==s1);System.out.println(s0==s2);System.out.prinltln(new String("hello") == new String("hello"));
程序最后一行,两次new出来的String对象不是同一个对象,所以返回false
Java会确保每个字符串常量只有一个,例子中s0和s1中的"hello"都是字符串常量,它们在编译器就被确定了,返回true
而"he"和"llo"也都是字符串常量,s2的"hello"也是字符串常量,s0 == s2返回true


StringBuilder

/**StringBuilder*/class StringBuilderTest{    public static void main(String[] args)    {        StringBuilder sb = new StringBuilder();        //追加字符串        sb.append("java");    //sb = "java"        //从指定位置插入字符串        sb.insert(0, "hello ");    //sb = "hello java"        //在指定位置替换字符串        System.out.println(sb.replace(5, 6, ","));    //sb = "hello,java"        //删除指定位置的字符串        sb.delete(5, 6);    //sb = "hellojava"        //反转        sb.reverse();    //sb = "avajolleh"    }}




---------------------- ASP.Net+Android+IOS开发</a>、.Net培训、期待与您交流! ----------------------
原创粉丝点击