字符串详解

来源:互联网 发布:淘宝店铺的描述怎么写 编辑:程序博客网 时间:2024/04/28 06:28

1.不可变字符串(String):

(1)字符串相等的比较:

==:引用(内存地址)的比较

equals方法:字符串内容的比较,在比较或操作前先判断字符串是否为空,一般做法如下:

String str1 = “abc”;

String str2 = “abc”;

if(str1 != null && !str1.trim().equals(“”) && str2 != null && !str2.trim().equals(“”)){

//执行比较的内容

}

(2) 字符串的定义方式:

String str1 = “abc”;

String str2 = new String(“abc”);

(3)null 和 “”的区别:

null表示没有为字符串分配内存地址,在堆中没有开辟空间

“”表示空字符串,但分配了内存地址,并且开辟了空间。

(4)length():取得字符串的长度,注意与数组长度的区别,此处是方法,而数组出是属性,没有括号。

(5)charAt(int):取得字符串某索引处的字符值,注意字符串的索引范围是0~str.length()-1;

(6)indexOf(char):取得某个字符最早出现的索引值,lastIndexOf(char):取得某个字符最后出现的索引值,indexOf(int, char):取得字符从某处开始第一个的索引值。

(7)substring(int):取得从当前索引开始以后的所有字符串,substring(int, int)取得从第一个索引开始到第二个索引之前的所有字符,注意此方法名全是小写。

(8)trim():去掉字符串两端的空格。

(9)startsWith(char):判断字符串是否以某字符开头,endsWith(char):判断字符串是否以某字符结束。

(10)replace(char,char):字符替换,用第二个字符替换第一个字符

replaceAll(String, String):字符串替换,用第二个字符串替换第一个字符串。

(11)toLowerCase():转换成小写,toUpperCase():转换成大写(大小写转换例子见codeh)

(12)数值转换成字符串的一般处理:”” + num即用引号直接加数值。

(13)compareTo(String, String):比较两个字符串,返回int型,注意比较规律:如果位数相同则比较第一个不同字母的ASCII码,如果位数不同且大于位数较少的时仍没有不同的字符则比较位数,否则也比较ASCII码。

(14)字符串和其它类型之间的转换:

字符串->字节数组:str.getBytes();

字节数à字符串:new String(myByteArray)

字符串->整型:Integer.parseInt(String)

整型->字符串:”” + int 或new String(int)

字符串->整型对象:new Integer(String)

整型对象->字符串:new Integer().toString()

字符串->字符数组: str.toCharArray()

字符数组->字符串:new String(char[] charArray)

(15) new String(myByteString.getBytes("ISO-8859-1"), "GBK"):将字符串的编码格式从ISO-8859-1转换成GBK

(16)split(String):通过一个字符串参数将字符串分割并返回一个字符串数组,注意参数时字符串格式。

StringTokenizer(String, String, boolean):三个参数分别是要分割的字符串,分隔符,是否保留分隔符。通过:

while(st.hasMoreTokens()){//当有更多的token时

String token = st.nextToken();//取得下一个

System.out.println("token:" + token);

}

这种形式可以取得每一个分割完的字符串,在开发时常用到第二种方式。

2.可变字符串(StringBuffer

(1)容量问题:StringBuffer初始化没有字符串时容量为16,当初始化有字符串时,它的默认容量等于字符串长度加16。当添加字符串长度大于默认容量时,它的容量为当前容量乘以2再加2.

(2)长度问题:setLength(int):设置可变字符串的长度为当前值,如果当前值小于可变字符串中的已有字符串的长度时,字符串的内容会被从后向前剪掉。

(3)append(String/int/boolean…):可以追究各种类型的变量,但最终都回被转换成字符串,常用于数据库追究sql语句。

(4)insert(int, 内容):向字符串的不同索引处插入内容,内容可以时各种类型的变量

(5) capacity:可变字符串的容量;

(6)String和StringBuffer的区别和转换:

区别:String中字符改变(如添加后)内存地址会发生改变,引用变量指向另一地址,但是StringBuffer中字符串改变后内存地址不会发生改变,引用变量所指向的地址没有发生变化。

转换:String->StringBuffer: new StringBuffer(String)

StringBuffer->String: new StringBuffer.toString()

原创粉丝点击