关于Java中的String类
我們知道String聲明的字符串是不能被改變的。那么如果我們使用下面的語(yǔ)句:
String str = "Hello" ;
str = str + "World!" ;
你會(huì)發(fā)現(xiàn),我們?nèi)绻敵鰏tr,答案是:Hello World!
那么,從表面上看str被改變了,而實(shí)際上是這樣的:
當(dāng)我們執(zhí)行上面的兩條語(yǔ)句后,中間的過(guò)程用如下圖來(lái)表示:
也就是說(shuō)開(kāi)始用String申請(qǐng)的空間保存的"Hello"在內(nèi)存中是不變的,在連接“World!”的時(shí)候重新申請(qǐng)了空間。最后str重新指向str + "World!"。
可以發(fā)現(xiàn),如果在一個(gè)程序中我們大量使用這樣的語(yǔ)句將會(huì)使程序的效率變得非常低,因?yàn)橐皇窃谥赶蛐碌膬?nèi)存塊之前要先斷開(kāi)原來(lái)的指向鏈接,二是這樣會(huì)產(chǎn)生很多垃圾空間。
String類(lèi)中的重要API
1.public char[] toCharArray() ? 將字符串轉(zhuǎn)化為字符數(shù)組。
? 例:char c[] = str.toCharArray();
2.char charAt(int index) ?返回字符串中下標(biāo)為index的字符。
3.將字符數(shù)組轉(zhuǎn)化為字符串
??
? 例:str1 = new String(c) ? ? ? ? ? ? 把字符數(shù)組的全部字符轉(zhuǎn)化為字符串
? ? ?str2 = new String(c,start,num) ? 把字符數(shù)組的部分字符轉(zhuǎn)化為字符串
4.字符串與Byte數(shù)組的轉(zhuǎn)換
?byte數(shù)組(字節(jié)數(shù)組),在一般的IO操作中會(huì)經(jīng)常使用到。
?byte[] getBytes() ?將字符串變?yōu)樽止?jié)數(shù)組
5.查找指定的字符是否存在
? public int indexOf(String str) ? ?返回的是字符串的位置,如果不存在則返回-1
6.去掉字符串的多余的空格,只能去掉左右兩邊多余的空格,而中間的不能。 例如:str.trim()
7.字符串截取
? 例:str.substring(6) ? 從第七個(gè)位置開(kāi)始截取到結(jié)尾。
? ? ?str.sunstring(0,5) ?0為起始位置,5為結(jié)束位置的子串。
綜合應(yīng)用:
public class StringAPI {public static void main(String[] args){String str = "HelloWorld!";char c[] = str.toCharArray(); // 把字符串轉(zhuǎn)化為字符數(shù)組for(int i=0;i<c.length;i++){System.out.print(c[i]+" ");}System.out.println();String str1 = new String(c); //把字符數(shù)組轉(zhuǎn)化為字符串String str2 = new String(c,0,3);//把字符數(shù)組中的從0開(kāi)始的3個(gè)字符轉(zhuǎn)化為字符串System.out.println(str1);System.out.println(str2);System.out.println(str1.charAt(4)); //取出str1中下標(biāo)為4的字符byte c1[] = str.getBytes();} }
總結(jié)
以上是生活随笔為你收集整理的关于Java中的String类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: register---C语言中最快的关键
- 下一篇: Java常见知识点