字符串的几种创建方式与区别

  1. 字符串字面量

    • 当使用字符串字面量(如String s = "hello";)时,JVM会首先检查字符串常量池中是否已经存在该字符串。
    • 如果存在,则不会创建新对象,而是返回常量池中该字符串的引用。
    • 如果不存在,则会在常量池中创建一个新的字符串对象,并返回其引用。
  2. 使用new关键字

    • 使用new String("hello")时,无论常量池中是否存在"hello",都会在堆内存中创建一个新的String对象。
    • 这个新对象的内容与常量池中的"hello"相同,但它是一个全新的对象,有自己的内存地址。
    • 常量池中的字符串不受影响。
  3. 字符串拼接

    • 使用+操作符拼接字符串时,如果参与拼接的字符串都是常量且没有变量参与,编译器可能会进行优化,将结果作为单个字符串字面量放入常量池(这取决于编译器的实现和JVM的优化)。
    • 如果拼接过程中涉及到了变量,那么结果通常是通过StringBuilder(或StringBuffer&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值