很有质感的网站,thinkphp做的商城网站分销平台,可以帮忙做网站做公司,宁波大型网站制作今天在敲代码的时候#xff0c;无意间看到这样一个提示#xff1a; 英文不太好#xff0c;先问问ChatGPT#xff0c;这个啥意思#xff1f; IDEA 提示你#xff0c;可以将代码中的 StringBuilder 替换为简单的字符串连接方式。
提示信息中说明了使用 StringBuilder 进行…今天在敲代码的时候无意间看到这样一个提示 英文不太好先问问ChatGPT这个啥意思 IDEA 提示你可以将代码中的 StringBuilder 替换为简单的字符串连接方式。
提示信息中说明了使用 StringBuilder 进行字符串拼接在现代 JVM 中并不一定比使用 String 连接有显著的性能优势尤其是对于简单的字符串拼接操作直接使用 String 连接可能更加简洁明了。
可以被替换为
String str 哪吒编程 study ChatGPT4o;这样可以使代码更简洁同时在大多数情况下不会对性能产生明显的负面影响。
IDEA 提供了自动替换的选项点击提示框中的 “Replace ‘StringBuilder’ with ‘String’” 即可自动进行替换。 GPT功能
GPT-4o知识问答支持1000token上下文记忆功能最强代码大模型Code Copilot代码自动补全、代码优化建议、代码重构等DALL-E AI绘画AI绘画 剪辑 自媒体新时代私信哪吒直接使用GPT-4o 实际上从JDK1.5开始Java编译器就做了自动优化使用“”拼接字符串编译器编译后自动优化为使用StringBuilder。
做一个小测试拼接10000个哪吒编程 study ChatGPT4o看下使用“”拼接字符串和使用StringBuilder哪个速度快。
public class StringTest {public static void main(String[] args) throws IOException {
// long timeSum 0;
// for (int i 0; i 3; i) {
// timeSum spliceStrByAdd();
// }
// System.out.println(使用拼接字符串平均耗时: timeSum/3 毫秒);long timeSum 0;for (int i 0; i 3; i) {timeSum spliceStrByBuilder();}System.out.println(使用StringBuilder拼接字符串平均耗时: timeSum / 3 毫秒);}private static final int n 10000;/*** 使用拼接字符串** return*/private static long spliceStrByAdd() {Instant start Instant.now();String ret ;for (int i 0; i n; i) {ret 哪吒编程 i;ret study i;ret ChatGPT4o i;}Instant end Instant.now();Duration elapsed Duration.between(start, end);long time elapsed.toMillis();System.out.println(使用拼接字符串耗时: time 毫秒);return time;}/*** 使用StringBuilder拼接字符串*/private static long spliceStrByBuilder() {Instant start Instant.now();StringBuilder builder new StringBuilder();for (int i 0; i n; i) {builder.append(哪吒编程).append(i);builder.append( study).append(i);builder.append( ChatGPT4o).append(i);}Instant end Instant.now();Duration elapsed Duration.between(start, end);long time elapsed.toMillis();System.out.println(使用StringBuilder拼接字符串耗时: time 毫秒);return time;}
}这差距还真是巨大相差1000倍Idea给的提示这不是胡扯嘛
上面还说jdk1.5开始在编译时自动优化为StringBuilder现在我用jd-gui对class文件进行反编译查看编译后的代码差异。 这个时候很多杠精就该站出来了你这测试有问题不能这么干
你这循环拼接10000次通过拼接时你就创建了10000个字符串你这测试的并不是纯拼接耗时
好像说的有点道理~
public class StringTest2 {public static void main(String[] args) throws IOException {long timeSum 0;for (int i 0; i 3; i) {timeSum spliceStrByAdd();}System.out.println(使用拼接字符串平均耗时: timeSum/3 毫秒);timeSum 0;for (int i 0; i 3; i) {timeSum spliceStrByBuilder();}System.out.println(使用StringBuilder拼接字符串平均耗时: timeSum / 3 毫秒);}private static final int n 10000;/*** 使用拼接字符串** return*/private static long spliceStrByAdd() {Instant start Instant.now();for (int i 0; i n; i) {String ret 哪吒编程 i study i ChatGPT4o i;}Instant end Instant.now();Duration elapsed Duration.between(start, end);long time elapsed.toMillis();System.out.println(使用拼接字符串耗时: time 毫秒);return time;}/*** 使用StringBuilder拼接字符串*/private static long spliceStrByBuilder() {Instant start Instant.now();for (int i 0; i n; i) {StringBuilder builder new StringBuilder();builder.append(哪吒编程).append(i);builder.append( study).append(i);builder.append( ChatGPT4o).append(i);}Instant end Instant.now();Duration elapsed Duration.between(start, end);long time elapsed.toMillis();System.out.println(使用StringBuilder拼接字符串耗时: time 毫秒);return time;}
}使用和StringBuilder单独拼接字符串时效率上确实差不多少
也就是说在拼接少量字符串的时候使用也是可以的Idea的提示还是有点道理的
我把这两个class和idea提示截图直接传给ChatGPT看它怎么看待这个问题。 ChatGPT牛笔 GPT功能
GPT-4o知识问答支持1000token上下文记忆功能最强代码大模型Code Copilot代码自动补全、代码优化建议、代码重构等DALL-E AI绘画AI绘画 剪辑 自媒体新时代私信哪吒直接使用GPT-4o