Java中创建String类型变量后,变量的内存使用情况

本文探讨了Java中创建String类型的三种方式:直接赋值、使用new关键字和通过字符数组。每种方式在内存中的表现不同,其中直接赋值的方式引用字符串常量池中的对象。字符串常量池确保相同内容的字符串只会存在一份。equals方法用于内容比较,而'=='判断对象引用。示例代码展示了intern()方法如何使新创建的String对象指向常量池中的相同字符串。
摘要由CSDN通过智能技术生成
  • 字符串创建的三种方式:
  1. String str1 =“hello”;
  2. String str2=new String(“hello”);
  3. char[] value = {‘h’,‘e’,‘l’,‘l’,‘o’};
    String str3=new String(value);
           三种创建方式在内存中开辟的空间是不一样的,每次new一个对象,就会在内存中开辟一个空间;第一种方式是在堆上的字符串常量池放入"hello" ,str1引用该地址;而第二种构造String的方式,在底层是与第三种实现的方法是相同的,创建value[ ] 数组,然后指向‘hello’内容。 需要记得字符串常量不可更改,因为value数组是用final修饰的。
           通常 == 比较的是对象的地址是否一致,但是对于指向的内存的比较则用 ‘equals()’ 函数实现。内容比较,equals先比较是否引用同一个对象,是的话返回True,不是的话将字符串转换为数组,遍历数组然后比较数组内容是否相等。

在这里插入图片描述
       显然,str1,str2,str3,若用 '=='来判断的话,答案都是false 。值得注意的是如下代码:
        String str1=“hello”;
        String str2=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值