① java 中String s="你好" 跟 String s=new String("你好")有什麼區別
在操作s上沒區別。
區別在於
Strings="你好";
這樣"你好"這個字元串分配在棧中,隨著所在函數的結束而被釋放。
Strings=newString("你好");
這樣"你好"這個字元串分配在堆中,不會因為所在函數的結束而被釋放。只有等無人使用時,被Java虛擬機自帶的垃圾回收機制釋放。
② java string常用方法
常見String類的獲取功能
public int length(): 獲取字元串的長度。
public char charAt(int index): 獲取指定索引位置的字元
public int indexOf(int ch): 返回指定字元在此字元串中第一次出現處的索引。
public int indexOf(String str): 返回指定字元串在此字元串中第一次出現處的索引。
public int indexOf(int ch,int fromIndex):返回指定字元在此字元串中從指定位置後第一次出現處的索引。
public int indexOf(String str,int fromIndex): 返回指定字元串在此字元串中從指定位置後第一次出現處的索引。
public String substring(int start): 從指定位置開始截取字元串,默認到末尾。
public String substring(int start,int end): 從指定位置開始到指定位置結束截取字元串。
③ Java數組中string的用法
String a[ ]={"1","2","3","4",null};
String b[ ]={"1","2","3","4",'c'};
A是正確的。
null表示空指針,所以你可以理解它是沒有類型的,但也可以是任意類型的(任何指針都可以置null)。
而B中,當然不可以將一個字元類型(基本類型)賦值給一個字元串類型(類類型)。
④ java里String 和StringBuffer的區別
STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字元串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法
使用 StringBuffer 主要就是在性能上的考慮。 String 是一種非常常用的數據類型,但由於 String 是不可變對象,在進行 String 的相關操作的時候會產生許多臨時的 String 對象。而 StringBuffer 在操作上是在一個緩沖中進行的,性能當然優越得多。不過,一般做為簡單的字元串傳遞和其它操作,只不要改變字元串內容的操作,用 String 效率會高一些。
⑤ JVM能不能自動釋放string所佔用的存儲空間
JVM能自動釋放
總結:
JAVA里的回收機制並不是很可靠的,你不可能知道它何時才會啟動
2. 每次都要等到下次運行回收機制時才真正的回收你所不用的內存。
3. 最好不要用String,用StringBuffer更好,
⑥ java如何手動釋放內存
java當中數組是不需要手動釋放的,底層有自動回收垃圾的機制,擴展如下:
前一次循環結果如果沒有被引用,那麼會等待被自動釋放,如果被引用,則不釋放。
String[] str2=new String[500];
意思是每次循環都重新定義,並且重新賦值為新創建的數組對象,而上次循環所聲明的變數以及所創建的數組對象都被列入自動回收列表了。