String ==的几种情况说明记录

堆 直接存放于堆中,或者 存在于常量池中。

==比较的是内存地址 equals 比较的是值

示例1

   String  x = "hello";
    String y = "hello";
   System.out.println(x == y);       //true
    System.out.println(x.equals(y));  //true

String x = “hello”; 在堆的常量池中生成一个hello对象, x指向 它
String y = “hello”; 常量池中已经存在hello对象, y直接指向它

示例2

  char[] ch={'a','b','c'};
    String s1= new String(ch);
    String s2="abc";
    System.out.println(s1==s2);       //false

new String 生成的abc 直接在堆中申请一块内存空间进行存放
String s2=“abc”; 在常量池中生成abc
所以 s1 和s2 内存地址是不一样的

示例3

char[] ch={‘a’,‘b’,‘c’};
String s1=new String(ch);
s1.intern();
String s2=“abc”;
System.out.println(s1==s2); //true

new String 生成的abc 直接在堆中申请一块内存空间进行存放
s1.intern(); 调用intren方法,会将该内存复制到常量池中,内存地址一致
String s2=“abc” 直接指向复制的内存地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值