String对象的创建与原理

本文详细解析了Java中String对象的三种创建方式及其背后的原理,包括使用new关键字、直接指定和使用串联生成字符串的不同机制,以及它们如何影响内存中的字符串池和堆栈。

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

 String对象的创建与原理

 创建方式

     * 1.使用new关键字:String s1 = new String("abc");
     * 2.直接指定:String s2 = "abc";
     * 3.使用串联生成字符串:String s3 = "ab" + "c";


  原理一:

  使用任何方式创建字符串 s=x时,java运行时会在缓冲池中查找是否存在内容相同的字符串对象,存在则不在池中添加,直接    使用已有的,没有才在缓冲池中创建x.

  原理二:
  使用new关键字创建时,不管池中、堆栈中是否已有,一定会在堆或栈创建一个新的对象.

  原理三:
  使用直接指定或串联方式创建时,仅仅会维护缓冲池中的字符串:有则用已有的,没有才创建新的;但绝不会在堆栈中再创建.

   原理四:
   使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象.

  举个实例

 String s1 = "linbizhao";
 String s2 = "linbizhao";


 System.out.println(s1==s2); //true
 System.out.println(s1.equals(s2)); //true

原理:(不会创建堆)

 String s3 = new String("linbizhao");
 String s4 = new String("linbizaho");

 System.out.println(s3==s4); //false
 System.out.println(s3.equals(s4)); //false

原理:(创建堆)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值