您的位置:首页 > 产品设计 > UI/UE

黑马程序员-String、StringBuffer和StringBuilder

2013-07-26 10:15 381 查看
---------------------- 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培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: