字符串底层原理

文章探讨了Java中字符串的内存存储方式,包括直接赋值时复用常量池和new操作创建新对象。对于==”的比较,说明了基本类型比较值,引用类型比较地址。在字符串拼接方面,对比了JDK8前后的方法,指出使用StringBuilder或StringJoiner能提高效率,避免频繁的+操作导致的性能浪费。
摘要由CSDN通过智能技术生成

一、字符串存储的内存原理 

1.直接赋值会复用字符串常量池中的。

2.new出来不会复用,而是开辟一个新的空间。

 二、==号比较的到底是什么

1.基本数据类型比较数据值

2.引用数据类型比较地址值

三、字符串拼接的底层原理

无变量参与情况

 

有变量参与(JDK8以前)
JDK8以后

 

JDK8以前,每次有变量参与,都需要在堆内存创建StringBuilder对象,然后添加内容,在创建String对象,将StringBuilder转换成String。JDK8以后,先对数组长度进行预估,虽然比前者效率高,但仍然浪费效率。所以字符串变量拼接不要直接“+”,尽量使用StringBuilder或者StringJoiner。

四、StringBuilder提高效率的原理图

 StringBuilder是一个内容可变的容器。

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值