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

posted @ 2022-01-28 16:55  Dre_am_tale  阅读(12550)  评论(0编辑  收藏  举报