String和StringBuild区别

三角洲自动购买工具 —— 基于 OCR 的价格识别与自动点击 通过的方式,我们可以轻松实现自动化的“价格监控 + 自动点击”工具。它的优势在于通用性—— 只要能截屏识别价格,就能用于任何程序,不依赖特定 API。未来可以扩展的功能:自动保存配置到文件。支持多价格区域检测。增加快捷键启停功能。 阅读详情

一.不可改变String

String对象是不可改变的, 
查看JDK文档,发现String类中每一个看似修改String的方法,实际上都创建了一个新的String对象,而最初的String对象则丝毫未动.

java传递参数的时候,传递的是引用的一个拷贝,调用时,都会复制一份引用,而引用所指向的对象,一直呆在某一单一物理位置,从未变动过.

二.重载 “+” 与 StringBuilder

String对象是不可改变的,你可以给一个String对象加任意多的别名. 
String对象是只读的,所要指向它的任何引用都不可能改变它的值.so不会对其他引用产生什么卵影响. 
用于String类中的”+” / “+=” 是Java中仅有的两个重载过的操作符,而java并不允许我们重载任何操作符;

public class one {
    public static void main(String[] args) {
        String a = "abc";
        String b = "123" + a + "def" + 777;
        System.out.println(b);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如上代码,可能这样工作: 
String有append方法,然后返回一个新的String对象的引用,以包含连接后的字符串,然后再append , 再创建新对象. 
这种方式当然行得通,但是为了生成最终的String,次方式会产生一堆需要垃圾回收的中间对象.然后发现其性能略lowBi.那么编译器真的会这样做吗?

来来~~,反编译生成的.class

javap -c one.class 
这是JDK自带的工具 javap -c参数生成字节码

这里写图片描述

懂点汇编就行,,dup,invokevirtural 就是jvm上的汇编.

看好了: 
6: dup 
7: invokespecial #4 // Method java/lang/StringBuilder.””:()V 
10: ldc #5 // String 123 
12: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;


编译器自动引用java.lang.StringBuilder类,用以构造最终的String,为每个”+”调用一次append方法,最后调用toString方法生成最终的String并保存

三.what if 在循环里使用”+”呢

经过实验发现:

1.这样写:

String str = "";
for(int i = 0; i < num; i++)
{
    str += "a";
}
  • 1
  • 2
  • 3
  • 4
  • 5

javap -c

这里写图片描述

5~33是循环体, 15句创建一个StringBuilder对象

可知StringBuilder在循环体内构建,每次循环,创建新的StringBuilder

2.这样写:

 StringBuilder a = new StringBuilder();
for(int i = 0; i < 10; i++)
{
    a.append(i); //只有String能"+"
}
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述
只创建一个StringBuilder类

所以以后写的时候就知道咋回事了.

版权声明:本文为博主原创文章,转载请注明出处:http://blog.youkuaiyun.com/dextrad_ihacker http://blog.youkuaiyun.com/Dextrad_ihacker/article/details/53055709
基于自抗扰控制的虚拟同步发电机二次调频控制研究 摘要:本文针对高比例可再生能源并网导致的电力系统频率稳定性问题,提出基于自抗扰控制(ADRC)的虚拟同步发电机(VSG)二次调频控制策略。通过分析VSG工作原理和传统调频方法的不足,设计了非线性ADRC和线性ADRC两种控制器,详细阐述了参数整定方法。仿真结果表明,该策略能有效消除频率稳态偏差,提升系统抗扰能力,为分布式电源参与电网调频提供了新思路。 关键词:虚拟同步发电机;自抗扰控制;二次调频;频率调节;抗扰能力 阅读详情

相关推荐

ComfyUI实战:AnimateDiff与ControlNet结合,打造无缝风格化视频转绘

本文详细介绍了如何利用ComfyUI平台,结合AnimateDiff与ControlNet插件,实现高质量的视频风格化转绘。通过搭建节点工作流、调整关键参数,有效解决画面闪烁与失真问题,并分享了进阶玩法与常见问题解决方案,帮助用户轻松打造流畅、风格统一的动态视觉效果。

weixin_29039773的博客 341

Java中关于String类型以及StringBuilder的使用区别以及相关练习记录

(1)该方法的参数为String类型,表示用户给定的成员变量的名字,返回值类型为String类型,返回值为成员变量对应的get方法的名字。(1)该方法的参数为String类型,表示用户给定的成员变量的名字,返回值类型为String类型,返回值为成员变量对应的set方法的名字。现有如下文本:"Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的"。(2)如:用户调用此方法时给定的参数为"name",该方法的返回值为"getName"

qq_59335499的博客 828

西门子200 SMART与博图WinCC通讯全攻略:从PC Access到S7-200协议避坑指南

本文详细解析了西门子S7-200 SMART PLC与博途WinCC上位机通讯的两种主流方案:基于PC Access SMART的OPC通讯和利用博途内置S7-200协议驱动直连。文章深入对比了两种架构的优缺点、配置步骤,并提供了从网络层到软件层的深度排错指南与性能优化建议,帮助工程师高效、稳定地实现系统集成。

gg901的博客 814

String和StringBuilder的区别

String和StringBuilder的区别

小凡凡的博客 491

单相全桥逆变器中比例谐振(PR)控制的优化设计与实现

本文深入探讨了比例谐振(PR)控制在单相全桥逆变器中的优化设计与实现。通过对比PID控制,详细阐述了PR控制在50Hz基波频率处实现无静差跟踪和强抗干扰性的原理。文章提供了从理论建模、参数整定(Kp, Kr, ωc)到仿真验证的完整实战流程,并介绍了准比例谐振(QPR)控制以增强频率鲁棒性,以及多谐振点设计以抑制特定谐波等进阶优化方法,最终实现THD从3%降至1%以内的显著性能提升。

weixin_29056781的博客 176

HFSS与AI融合:智能算法如何重塑天线设计流程

本文探讨了HFSS与AI融合如何通过智能算法革新天线设计流程。在5G/6G通信时代,AI技术如机器学习和遗传算法显著提升了高频电磁场仿真效率,将传统设计周期从数周缩短至数小时,并优化了天线性能。文章详细介绍了AI与HFSS的集成策略、关键技术突破及典型应用案例,展示了智能算法在天线设计中的巨大潜力。

weixin_29035147的博客 781

String,StringBuild 和 + 的区别与性能

一、String和StringBuild的区别 1. String是不可变的只读常量,每当String赋予了一个新的值,它只是修改了它的引用,并将旧引用做了标记,但是并不会马上释放,会导致内存占用增加。其源码是由不可变字符数组构成。 2. StringBuild是可变字符串,初始长度位16位,当有参数构造时会多16位。 StringBuild本身属于变量,拥有扩容机制,当增加字符串超过长度后,StringBuild会将长度扩容为2倍+2。 二、“+”与StringBuild 当一个字符串进

weixin_44251773的博客 658

RAGFlow系列(06):从0.20.0版本升级到最新版的完整指南

本文提供了从RAGFlow 0.20.0版本升级到最新版的完整指南。升级前务必进行数据、配置和状态的三层备份,尤其是智能体配置因版本间存在不兼容风险。指南详细说明了如何优雅停止服务、拉取新代码、检查并调整配置文件(如端口、环境变量),以及最终部署验证的步骤,确保升级过程平滑安全。

weixin_29243279的博客 465

String和StringBuilder的区别是什么

由于 String 类是不可变的,对于频繁的字符串连接操作,会产生大量的临时对象,对内存和性能造成影响。而 StringBuilder 类可以通过追加、插入、删除等操作,高效地修改字符串内容,减少了临时对象的产生,提高了性能。如果需要在多个线程中共享字符串,或者需要保证字符串的内容不被修改,可以使用 String 类。总而言之,String 类适用于不需要频繁修改字符串内容的场景,而 StringBuilder 类适用于需要频繁修改字符串内容的场景,且不涉及多线程并发操作。

wzxue1984的博客 1233

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 481

适航规章、标准,书籍资料下载汇总(增加DO-297 IMA)

从事IMA平台适航工作的朋友看过来,DO-297英文版PDF可以下载了!更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载,后台回复关键词”330“获取下载链接。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载,后台回复关键词”160“获取下载链接。2024-11-10:增加DO-297英文版PDF下载,后台回复关键词”297“获取下载链接。以下是一些收集到的适航相关的资料,分享给大家。

qq_41854911的博客 1579

Java中String类和StringBuilder类的区别

本文主要介绍的是Java中String类和StringBuilder类的区别

gaoqiandr的博客 923

第4章-07-将WebDriver获取的Cookie传递给Requests

在使用Selenium WebDriver获取了浏览器的Cookies之后,你可以将这些Cookies传递给requests库,以便在后续的HTTP请求中使用这些Cookies。这样做可以让你模拟浏览器会话,使得请求看起来像是从之前使用Selenium WebDriver控制的浏览器发出的。

黑夜开发者的博客 692

String、StringBuffer和StringBuild的区别

String、StringBuffer和StringBuild的区别

qq_42513661的博客 282

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

String、StringBuild、StringBuffer的区别

String StringBuilder StringBuffer 区别 适用于少量的字符串操作的情况 适用于单线程下在字符缓冲区进行大量操作的情况 适用于多线程下在字符缓冲区进行大量操作的情况 字符串拼接效率最低 单线程安全 多线程安全,类方法中加入了Synchronized关键字 ...

qq_39438055的博客 477

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

String和StringBuild的区别

个人总结【简单概括:StringBuild的是个动态对象,可直接拼加上字符串;而string对象的步骤:先初始化对象并赋值了,而后在拼加字符串时,先要创建需要拼加的字符串,然后再拼加,所以这就是StirngBuild远比String效率高的原因!】以上纯属个人观点!若有错误/补充请告知。。。----------------------------------------------------

teresa502的专栏 3408

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

String,StringBuild,StringBuffer的区别

String,StringBuild,StringBuffer的区别

三七益生菌的博客 2379

String StringBuffer StringBuild三者的区别

String StringBuffer StringBuilder区别

mysky984的博客 1197

C#中String与StringBuild的区别

前言:本博文,主要讲解C#String与StringBuild的区别,其他内容,请参考: 文章目录一、两者区别概述二、通过例子分析下三、深入认识StringBuilder四、回看两个类型 一、两者区别概述 首先,我们要明确,String是引用类型,一旦赋值,值是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新

路虽远,行则必至! 1870

String、StringBuffer、StringBuild之间的区别

String 和 StringBuffer/StringBuilder,它们都可以储存和操作字符串,区别 如下: 区别 1)String 是只读字符串,也就意味着 String 引用的字符串内容是不能被改变的。初学者可能会有这样的误解: String str = “abc”; str = “bcd”; System.out.println(str) //bcd 如上,字符串 str 明明是可以改变的呀!其实不然,str 仅仅是一个引用对象,它指向一个字符串对象“abc”。第二行代码的含义是让 str 重新

weixin_46250898的博客 589

string、stringbuffer、stringbuild的区别

String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内...

这个年纪的_我 455

String,StringBuffer,StringBuild的区别

1. String对象内容是不可改变的,StringBuffer是可以改变的,并且高效; 2. String String a = "123";  a = a + "456";  上面两句,虽然a的值最终改变了,但是实际上在编译的时候,第一句a是一个对象,被分配了一个地址,第二句执行时,原来的a被释放,然后重新分配。 a 原本指向一 String object instance ("

qq_36090419的博客 367

String,StringBuffer,StringBuild 区别

String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)

张俊勇的博客 536

String,StringBuffer,StringBuild区别

String string是不可变对象,对string对象的每个改变操作都会生成新的string对象 String s = "hello"; s = s + " world"; 执行这段代码,会开辟三次内存空间,“hello”、“world”、“hello world”,s指向新生成的“hello world”对象。所以内容经常改变的字符 串不使用String类型(会造成内存中大量的无引...

wyplj2015的博客 367

有关string stringbuff stringbuild 的区别

string stringbuff stringbuild的执行效率: stringbuild>stringbuff>string String类是不可变类,任何对String的改变都会引发新的String对象的生成; StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象,线程安全的。 StringBuilder是可变类,线性不安全的,不支...

dfug3303的博客 847

String,StringBuild,StringBuffer的区别?

String,StringBuild,StringBuffer的区别速度方面Stringbuild和StringBuffer的比较对于三者使用的总结 速度方面 StringBuild>StringBuffer>String 为什么String执行速度最慢? String: 字符串常量 StringBuffer: 字符串变量 StringBuild: 字符串变量 字符串常量: 不可改变 ...

y2227605053的博客 495
上一篇: jvm调优
下一篇: SQLServer CTE递归
庆涛1992
博客等级 码龄9年 37粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值