String的字符串等号与equals详解

String对象直接用双引号创建的字符串将会被放入堆中的常量池中
(JDK1.7之后位于堆中),当使用双引号直接创建的字符串值相同时会在池中查找是否有相同的值,如果找到将会直接使用(通过地址值进行指向),没有的话将重新创建,String的创建都是基于byte的进行的,当通过new的方式创建字符串时,String对象将不会放入常量池而是直接位于堆中(常量池除外)并且会被赋予地址值
在这里插入图片描述

public class StringClass {
    public static void main(String[] args) {
        String string = "abc";
        String string1 = "abc";
        String string3 = new String("abc");
        System.out.println(string3.equals(string));//true
        System.out.println(string.equals(string1));//true

    }
}

在这里插入图片描述
在这里插入图片描述
上述中的字符串也是一个对象,但是在比较时直接比较的是字符串内容是因为java.lang.String包中的String对这个方法进行了覆盖重写,
具体可以自行看源码
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值