热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何防止"通知:'StringBuildersb'可以用intellij-idea中的'String'替换"

如何解决《如何防止"通知:'StringBuildersb'可以用intellij-idea中的'String'替换"》经验,为你挑选了1个好方法。

当我使用IDE - "IDEA 14.03"时,它总是给我这个通知.注意:'StringBuilder sb'可以替换为'String'

下面是详细信息,当我定义一个名为"sb"的对象时,对象类是"StringBuilder".这是我尝试过的代码段:

StringBuilder sb = new StringBuilder("status=").append(status).append(" ,msg=").append(msg);
System.out.println(sb);

我只想知道如果我将"StringBuilder"更改为"String"有什么好处.为什么IDE总是通知我更改类类型?



1> Ad Infinitum..:

我想为了理解你的IDE为什么要把StringBuilder改成String,你应该理解String,StringBuffer和StringBuilder之间的区别.

字符串是不可变的.这意味着如果您想要从字符串中更改某些内容,则不会删除原始字符串,而是创建一个新字符串,其中包括您的更改.StringBuffer和StringBuilder是可变的.这意味着对您的更改,原始字符串将相应更改.

它们之间的另一个主要区别是String和StringBuffer是线程安全的,而StringBuilder则不是.还有其他差异,请查看此网站以了解有关差异的更多信息.

如果将String与StringBuilder进行比较,在大多数情况下,使用String更加实用和合乎逻辑,如果您不知道,您对字符串执行了什么操作.

将字符串与加号(+)连接并不总是更好.例如,如果由于其可变性而在循环中更改字符串,则StringBuilder的append方法更符合逻辑.请阅读代码中的注释;

String a;
StringBuilder b;
for(int i=0; i<5; i++)
{
a += i; //String is immutable and in each iteration, a new object will be created
b.append(i); //StringBuilder is mutable and in each iteration, the existing string will be used.
}

您的IDE所做的只是向您展示最佳实践.这就是为什么,它被称为推荐.

如果你想继续前进,不要让Intellij警告你; 你可以禁用警告;

在此输入图像描述

编辑

@ CrazyCoder的评论在这里需要注意.

IDE在这里实际上非常聪明,它建议你改变它以获得更好的代码可读性,因为内部编译器将生成完全相同的字节码,并且你的代码将具有相同的性能和相同的内存使用,但它将更容易阅读.您可以获得可读性优势,而不会影响性能.不久前在IntelliJ IDEA论坛上提出并回答了类似的问题.


@aworker IDE在这里实际上非常聪明,它建议你改变它以获得更好的代码可读性,因为内部编译器将生成完全相同的字节码,并且你的代码将具有相同的性能和相同的内存使用,但它将更容易阅读.您可以获得可读性优势,而不会影响性能.类似的问题是[在IntelliJ IDEA论坛中提出并回答](https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000093250-Convert-StringBuilder-to-String-concatenation-suggestion)过去.
推荐阅读
author-avatar
my76572
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有