热门标签 | 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)过去.
推荐阅读
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
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社区 版权所有