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

黑马程序员-------String,StringBuffer,StringBuilder

2014-02-24 14:30 253 查看
---------------------- ASP.Net+Unity开发 .Net培训 期待与您交流! ----------------------

String类

1,字符串是一个特殊的对象

2,字符串一旦初始化就不可以被改变

3, String str= "abc"; String str1 = new String("abc");有什么区别?

public final class String

extends Object

implements Serializable, Comparable<String>, CharSequence

java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。

| String s1 = "abc";

| String s2 = new String("abc");

s1== s2 ; //比较是内存中的地址,所以为false

s1.equals(s2); //String类复写了Object类中的equals方法,

//该方法用于判断字符串是否相同。

s1和s2有什么区别?

s1在内存中有一个对象,s2在内存中有两个对象。

String的常见的方法:

常见操作 | 获取

| 判断

| 转换

获取

public int length();

public char charAt(int index);

注意:当index超出字符串的脚标范围时会发生StringIndexOutOfBoundsException.

public int indexOf(int ch);返回的是char在字符串第一次出现的位置

注意:如果ch在字符串中没有找到,会返回-1

public int indexOf(int ch, int fromIndex);从fromIndex位置开始,

获取ch在字符串第一次出现的位置

public int indexOf(String str);

public int indexOf(String str, int fromIndex);

public int lastIndexOf(int ch);

判断

public boolean endsWith(String str);

public boolean startsWith(String str);

public boolean isEmpty(); 字符串长度是否为0,

public boolean contains(CharSequence s);是否包含指定字符串

特殊之处:indexOf(str):可以索引str第一次出现的位置,

如果返回-1,表示str不在字符串中。

if((indexOf(str) != -1)){

....

}

public boolean equals(String str);

public boolean equalsIgnoreCase(String str);

转换(字符串和字节数组在转换过程中,是可以指定编码表的)

字符数组---->字符串

构造方法: new String(char[] value)

new String(char[] val, int offset, int count):将字符数组中的一部分转成字符串

静态方法: public static String copyValueOf(char[] chars)

public static String copyValueOf(char[] chars, int offset,int count)

public static String valueOf(char[]);

*字符串 ----> 字符数组

public char[] toCharArray()

字节数组 ----> 字符串

构造方法: new String(byte[] value)

字符串 ----> 字节数组

public byte[] getBytes();

基本数据类型 ----> 字符串

public String valueOf(int)

public String valueOf(double)

public String valueOf()

替换

public String replace(char oldchar, char newchar);替换单个字符

public String replace(CharSequence target, CharSequence replacement);替换一部分字符串

切割

public String[] split(regex);

eg: String str = "zhangsan,lisi,wangwu";

String[] arrStr = s.split(",");

for(String s : arrStr){

.................

}

子串,获取字符串中的一部分

public String subString(int begin);

public String subString(int begin,int end);//得到的子串包含begin位不包含end索引位的字符

转换,去除空格,比较

大小写转换

public String toUpperCase();

public String toLowerCase();

去除字符串两端的多个空格

public String trim();

对两个字符串进行自然顺序的比较

public int compareTo(String str);

eg: String s1="abc";

String s2 = "aaa";

System.out.println(s1.compareTo(s2)); //输出1

StringBuffer

是字符串缓冲区,

是线程同步的,安全的

是一个容器。

1, 长度可以变化,

2, 可以操作多个数据类型

3, 最终会通过toString方法变成字符串

有 CRUD操作:create,read,update,delete

存储:

添加: public StringBuffer append();//将指定数据作为参数添加到结尾处。

eg: sb.append("abc").append(true).append(43); //名词:方法调用链

插入: public StringBuffer insert(int, str); //将指定数据作为参数插入到指定位置。

删除:

public StringBuffer delete(int start, int end);

//删除从脚标start开始到end(不包含end)的字符

eg: stringBuffer.delete(0, stringBuffer.length()); //全部清空stringBuffer

public StringBuffer deleteCharAt(index);

//删除单个字符

获取:

public char charAt()

public int indexOf(String str)

public int length()

public String substring(int start, int end); //返回的是String而不是StringBuffer

修改(替换):

public StringBuffer replace(int start, int end, String str);

public void setCharAt(int index, Char char); //替换某一位字符,没有返回

反转

public StringBuffer reverse();

public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);

StringBuffer中从脚标srcBegin到srcEnd的字符(不包含srcEnd位的字符)放入到字符数组dst中,从脚标dstBegin开始放入;

StringBuilder (jdk1.5 版本之后出现)

一个可变的字符序列。

线程不同步,不安全,所以多线程时使用StringBuffer;一般情况下建议使用StringBuilder可以提高效率

---------------------- ASP.Net+Unity开发 .Net培训 期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐