Java 如何修改字符串某一个位置的字符
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