出于方便的考虑,我们在进行字符串的内容处理的时候往往会出现以下的代码: String result=""; result+="ok"; 这段代码看上去好像没有什么问题,但是需要指出的是其性能很低,原因是java中的String类不可变的(immutable),这段代码实际的工作过程会是如何的呢?通过使用javap工具我们可以知道其实上面的代码在编译成字节码的时候等同的源代码是: String result=""; StringBuffer temp=new StringBuffer(); temp.append(result); temp.append("ok"); result=temp.toString(); 短短的两个语句怎么呢变成这么多呢?问题的原因就在String类的不可变性上,而java程序为了方便简单的字符串使用方式对+操作符进行了重载,而这个重载的处理可能因此误导很多对java中String的使用。 下面给出一个完整的代码:
|
使用String还是StringBuffer?
最新推荐文章于 2023-02-13 04:00:00 发布