字符串拼接原理

24- 字符串拼接的底层原理 当在Java中进行字符串拼接时,底层的原理会根据使用的方式不同而有所不同。 阅读详情
public class hello{
	public static void main(String args[]){
		String a = "A";
		String b = "B";
		String c = a+b;
		System.out.println(c);
	}
}


这一块代码到底发生了什么呢,今天看了下字节码理解了这一过程的原理,


先上图吧~



使用javap功能可以查看编译后的class文件的一些信息,具体的其他功能可以从命令javap -help 中了解.
这里用上了-c选项 对class文件进行反汇编成字节码


从字节码中可以看出,先是实例化了一个字符串A和一个字符串B,当程序执行到
String c = a+b;
这一行的时候,可以看到这时候实例化了一个StringBuilder对象,然后执行了两次append方法,将变量a和变量b添加到对象中后执行了toString赋值给变量c
最后就是输出了变量c的内容


可以发现字符串"A"+字符串"B"背后的原理其实就是new StringBuilder().append("A").append("B").toString();


今天发现直接拼接字符串和两个String变量拼接是不一样的

看下面的代码生成了几个对象


public class StringTest{
	public static void main(String args[]){
		String C = "A"+"B";
		String D = new String(C);
	}
}


可以先思考这里生成了几个对象,

思考过后来从字节码中看看到底发生了什么



如图,答案是生成了两个对象,生命变量C的时候直接得到一个"AB"对象,而不是“A”对象、"B"对象以及"AB"对象


RAW、RGB、YUV图像格式的采样与存储原理详解 本文详细解析了RAW、RGB和YUV三种核心图像格式的采样与存储原理。RAW是传感器原始数据,信息完整但需后期处理;RGB直接对应显示,直观但数据量大;YUV通过亮色分离与色度下采样,在保证观感的前提下大幅提升传输与存储效率,是视频编码与流媒体的主流格式。理解其差异是图像处理与视频开发的基础。 阅读详情

相关推荐

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’

本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。

weixin_30566063的博客 503

字符串拼接的本质,以及在实际生产中使用拼接的注意点

public class StringTest5 { @Test public void test1(){ String s1 = "a" + "b" + "c";//编译期优化:等同于"abc" String s2 = "abc"; //"abc"一定是放在字符串常量池中,将此地址赋给s2 /* * 最终.java编译成.class,再执行.class * String s1 = "abc"; ..

yz18931904的博客 248

解忧杂货铺(四):Hightec生成HEX方法+小功能开启

Hightec使用的一些常用技能

梦想技术家 2161

字符串拼接的四种方式详解,代码测试

字符串拼接的四种方式详解,代码测试

zhu_fangyuan的博客 1万+

GNSS数据处理新手避坑:手把手教你用GAMP_GOOD下载IGS/MGEX数据(附.cfg文件详解)

本文详细介绍了如何使用GAMP_GOOD进行GNSS数据处理,从基础配置到高级参数调优,帮助新手避开常见错误。内容包括软件安装、配置文件详解、数据源选择、测站文件配置以及性能优化技巧,特别适合GNSS数据处理初学者快速上手。

weixin_30338481的博客 390

保姆级教程:用安卓手机+IP摄像头App,5分钟搭建一个免费的RTSP监控测试环境

本文提供了一份详细的保姆级教程,教你如何利用安卓手机和IP摄像头App在5分钟内搭建免费的RTSP监控测试环境。通过零成本方案,开发者可以快速获取实时视频流,适用于计算机视觉、物联网开发等多种场景。教程涵盖工具选型、配置详解、电脑端测试及OpenCV集成,助你高效完成开发测试。

weixin_27419879的博客 276

字符串拼接的5种方式

总之,选择哪种字符串拼接方式取决于你的具体需求。对于频繁的拼接操作,推荐使用或,以避免不必要的性能开销。如果只需要简单的拼接,使用运算符或者concat()方法即可。

沉梦听雨的博客 1万+

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

字符串拼接的几种方式

+ 号拼接 通过+拼接是最常见的拼接方式,这个应该算是最简单的一种方式了,但是很遗憾得玩告诉你,阿里巴巴在他们的规范里面之处不建议在 for 循环里面使用 “+” 进行字符串的拼接。这里的不建议,其实就是不允许的意思,只是人家说的比较委婉而已。事实上,现在还在拿 “+” 来做拼接的应该是比较少了吧。 阿里开发者社区的时候看到一篇文章《为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接》,里面提到这个 拼接符号 “+” 不是一个运算符重载,Java也并不支持这个所谓...

weixin_46058921的博客 2万+

【架构】-- StarRocks 和 Doris 介绍与选型建议

查询性能 | ✅ 高性能,支持向量化执行和 CBO 优化器 | ✅ 高性能,优化的查询引擎 |- **实时性要求高**:如果业务对数据的实时性要求较高,建议选择 **StarRocks**,其在实时数据处理和低延迟查询方面表现优越。- **复杂查询需求**:对于需要处理复杂多表关联查询的场景,两者均可胜任,需根据具体性能测试结果进行选择。

欢迎来到我的博客,一起探索代码里的世界! 1834

猿创征文|SfM(Structure from Motion)学习之路

SfM全称Structure from Motion,译为运动恢复结构,是三维重建pipeline的一部分,又称稀疏重建,在摄影测量领域则称为空三(空中三角测量)。SfM的任务是,给定一系列具有一定重叠度的图像,去同时估计出拍摄每张图像时相机的的位姿(位置t和姿态R)和被拍摄物体或场景的稀疏点云。...............

zeeq的博客 1万+

String类的三种常用拼接方法

使用“+” 连接符操作String类实际上是将String类转为StringBuilder类,调用StringBuilder类的append方法完成字符串拼接操作。concat方法实际上是重新申请一个当前字符串长度+拼接字符串长度的字符数组,然后拼接好的字符串复制到新数组中,然后调用String类的构造方法创建一个新的数组。我们都知道,String类是一个final的,不允许字符串的修改,更不允许字符串的“拼接”创建一个count+len长度的数组,然后将原数组内容和拼接的内容拷贝到新数组中。...

qq_45962279的博客 1万+

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1457

Java String + 拼接字符串原理

首先来一道思考题: String str1 = "111111"; String str2 = "222222"; String str = str1 + str2; System.out.println(str); 很明确,上述代码输出的结果是:"111111222222",但是它工作原理是怎样的呢? 由于字符串拼接太常用了,java才支持可以直接用+号对两个字符串进行拼接。**其真正实...

Charlie的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java String字符串拼接原理

java中的字符串的拼接可以分为下面三种情况: 1. 字符串常量与字符串常量的拼接 String s1 = "a"+"b"+"c"; 2. 字符串常量与变量的拼接 String s1 = "a"; String s2 = s1+"b"; 3. 变量与变量的拼接 String s1 = "a"; String s2 = "b"; String s4 = s1+s2; (1)常量与常量的拼接原理:         

qq_45800640的博客 8837

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java字符串怎么拼接字符串_Java中String使用+ 拼接字符串的原理是什么?

来看一段代码public class Test {String str1 = "51";String str2 = "manong";String str3 = str1 + str2;}反编译后,通过javap查看D:\app>javap -c TestCompiled from "Test.java"public class Test extends java.lang.Object{j...

weixin_36414025的博客 608

Java字符串拼接原理

JVM-字符串底层实现原理 前置内容 java虚拟机栈 1.那些字符串会进入字符串常量池 直接写的字面量 字面量的拼接结果(注意:如果字符串拼接中有变量则结果不会进入字符串常量池) 调用String的intern方法可以将String存入字符串常量池 2. 字面量的拼接原理 java源码 package com.hgy; import java.util.Arrays; import java.util.List; public class hello { public stati

sui_feng_piao_guo的博客 5528

String字符串拼接原理

String字符串拼接原理

m0_51358164的博客 3567

16. Java字符串拼接的低层原理

java 字符串拼接 低层原理 JDK8版本后: 系统柜会预估要字符串拼接之后的总大小,把要拼接的内容都放在数组中,此时也是产生一个新的字符串。

其木王·王子的博客 679

C语言字符串拼接函数的原理与应用

它首先找到dest字符串的末尾,即'\0'的位置,然后从这个位置开始,将src字符串的字符逐个复制到dest中,直到复制完src的'\0'。在C语言中,掌握strcat和strncat函数的原理与应用,能有效完成字符串拼接任务,同时要根据实际需求,谨慎选择合适的函数,规避缓冲区溢出等风险,确保程序的健壮性。其中,dest是目标字符串,src是源字符串。在这个模拟实现中,第一个循环找到dest的末尾,第二个循环将src内容复制到dest末尾,最后添加'\0',确保结果是合法字符串。

cloudman08的博客 611

java字符串拼接例子_Java数字和字符串拼接原理及案例

Java数字和字符串拼接原理及案例,字符串,数字,类型,的是,都是Java数字和字符串拼接原理及案例易采站长站,站长之家为您整理了Java数字和字符串拼接原理及案例的相关内容。字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。都知道,String 是 Java 中一个不可变的类,所以一旦被实例化就无法被修改。注意细节字符是char 类型,字符串是String 类型1、...

weixin_42493060的博客 206

Java字符串拼接的底层原理与性能优化

理解Java字符串拼接的底层原理,能够帮助开发者避免性能陷阱,在代码可读性和效率之间找到平衡。在简单场景中信任编译器的优化,在复杂场景中主动选择高效工具(如),才能写出更健壮的代码。

2301_80720675的博客 796

java中的String拼接字符串的原理

参考原文章地址:https://blog.youkuaiyun.com/u012337114/article/details/81317992 首先来一道思考题: String str1 = "111111";String str2 = "222222";String str = str1 + str2;System.out.println(str); 很明确,上述代码输出的结果是:"111111222222",但是它工作

向上的"狼"的博客 448

Java --- 字符串拼接 的 底层原理

所以,代码中 s3 = "ab", s4 = s1 + s2,s3 == s4 为 false。懂了?

yuanchenglong的博客 867

java用 拼接字符串的原理_Java String 拼接字符串原理详解

首先来一道思考题:String str1 = "111111";String str2 = "222222";String str = str1 + str2;System.out.println(str);很明确,上述代码输出的结果是:"111111222222",但是它工作原理是怎样的呢?由于字符串拼接太常用了,java才支持可以直接用+号对两个字符串进行拼接。**其真正实现的原理是中间通过建...

weixin_28689507的博客 309

java字符串原理_Java String 拼接字符串原理详解

首先来一道思考题:String str1 = "111111";String str2 = "222222";String str = str1 + str2;System.out.println(str);很明确,上述代码输出的结果是:"111111222222",但是它工作原理是怎样的呢?由于字符串拼接太常用了,java才支持可以直接用+号对两个字符串进行拼接。**其真正实现的原理是中间通过建...

weixin_42298412的博客 228

java字符串拼接string_Java String 拼接字符串原理详解

首先来一道思考题:String str1 = "111111";String str2 = "222222";String str = str1 + str2;System.out.println(str);很明确,上述代码输出的结果是:"111111222222",但是它工作原理是怎样的呢?由于字符串拼接太常用了,java才支持可以直接用+号对两个字符串进行拼接。**其真正实现的原理是中间通过建...

weixin_42241165的博客 315
上一篇: TypeError: object() takes no parameters
下一篇: You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值