使用char数组打印带有编辑字符的字符串,而不是创建新的String对象

时间:2017-07-11 10:07:40

标签: java string

此代码的目的是将字符串“A Happy”更改为“A Hippy”。

String originalStr = "A Happy";
char[] charOriStr = originalStr.toCharArray();
charOriStr[3] = 'i'; //simplified code, we are supposed to loop through the String

要打印修改后的字符串,我使用:

System.out.println(charOriStr);

但推荐的解决方案如下:

String revised = new String(charOriStr);
System.out.println(revised);

我是初学者,我不确定是否应该按照推荐的解决方案作为最佳实践指南?感谢您的一些指导,谢谢。

3 个答案:

答案 0 :(得分:3)

这里推荐的人显然是错的。由于您手中已经有char数组,因此无需再次将其转换为String,只需进行打印即可。因为您使用的println方法会将String再次转换为内部的char数组。

答案 1 :(得分:2)

您可以使用StringBufferStringBuilder编辑相同的输入,而不是创建新输入。

public class HelloWorld
{
    public static void main(String[] args)
    {
        StringBuilder str = new StringBuilder("A Happy");
        str.setCharAt(3,'i');
        System.out.println(str);
    }
}

底线:查看StringBuilder,您可以使用很多很酷的东西。

答案 2 :(得分:2)

char[]是java 8的实现。对于可以保存世界上所有脚本的Unicode文本的字符串,包括拉丁语,阿拉伯语,希腊语,西里尔语等。

保持String的抽象级别更多...... abstract ,当然完全完成了。 如果您想用汽车中的线圈替换,您不希望将其作为零件集合收回。

例如,char是UTF-16编码的2字节值,一种形式的Unicode。现在int值,所谓的代码点具有更少的不规则性。所以你可以根据代码点制定解决方案,并且已经处理了中文。