Java 如何修改字符串某一個位置的字符
首先,String是字符串常量,常量對象一旦創建后是不可更改的。以下面代碼為例:
String str = "123456";
str += "78";
System.out.println(str);
雖然最后會輸出"12345678",但實際處理過程是這樣的:JVM在str+="78"這一行執行時會創建一個新的對象str,並且把"123456" + "78"賦值給這個新對象,原來的str被JVM的垃圾回收機制銷毀掉了,所以,str實際上沒有被更改,現在的str並不是原來的str,而是新創建的一個對象。所以,String類型常量在Java中要進行操作的速度是比較慢的,需要不斷的創建新對象和銷毀舊對象。
而且String沒有提供替換某個位置字符的函數,僅僅提供了替換某些字符為新字符的函數。即replace和replaceAll。二者對應參數如下:
String java.lang.String.replace(CharSequence target, CharSequence replacement)
String java.lang.String.replaceAll(String regex, String replacement)
如何修改某個位置的字符
可以利用StringBuilder或者StringBuffer中的replace方法
StringBuilder和StringBuffer為字符串變量,對字符串處理的速度要比String類型快。
String str = "123456";
StringBuilder sb = new StringBuilder(str);
sb.replace(0, 1, String.valueOf('T'));
System.out.println(sb.toString());
最后輸出"T23456"
sb.repalce(start, end ,replacement)
sb會替換start(included)到end(excluded)的字符串為repalcement