Java面试题——String创建了几个对象

本文详细探讨了Java中字符串拼接的几种情况,包括常量与常量、常量与变量的拼接,分析了不同情况下创建的对象数量。在编译器优化下,常量拼接可能只产生一个对象,而常量与变量拼接会涉及StringBuilder,可能导致多个对象的创建。文章还讨论了JVM优化对对象创建的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



理论解释

java中对于字符串的拼接,存在常量和常量,常量和变量,变量和变量的三种情况的拼接,其次JVM的优化与否(针对常量和常量的拼接来说)也对创建的对象个数有关。


提示:以下是本篇文章正文内容,下面案例可供参考

一、常量和常量的拼接

在这里插入图片描述

String str1=“a”+"b"和String str2=new String(“a”+“b”)这入图片描述

因为这种情况是常量之间相加,经过编译器优化成了String str1 = “ab”,放在字符串常量池中,所以答案是创建了一个对象。如果不考虑优化的情况下,这一共是创建了3个对象的,因为一个双引号就是一个字面量(对象)。同时要考虑字符串常量池中是否存在a,b,ab。

在这里插入图片描述
在JVM优化情况下会产生1或2个对象,其中 new String() 必然在 堆中产生一个对象,“a” + “b” 在编译阶段由常量优化

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值