JAVA-字符串String“”==“”的判断

关于字符串==判断
String a = “a”;
String b = “b”;
String c = “ab”;//方法区 直接赋值的方式 最多产生一个对象在方法区, 如果方法区中已经有了该字符串常量,那么只会把该常量的引用返回给c ,而不会创建新的对象。这种方式会产生0-1个字符串对象。
String d = a+b;//堆中
String e = “a” + “b”;//对于字符串常量,java 的编译器在编译期间,如果是字符串常量做+连接,
那么会对进行连接的常量直接产生连接后的字符串常量。.class 文件中的e 变量已经是连接后的”ab”了;
String f = new String(“ab”);//所有new 出来的对象都会在堆中产生。该构造方法可能会产生1-2个对象。
String h = f.intern();//返回的是方法区的字符串常量的引用。
(a+b+c).intern();//在运行期可以动态的将某个字符串添加到由String类维护的字符串常量池中。
该方法永远返回的是方法区字符串常量池中的一个地址。
如果已经存在该字符串常量,直接返回该地址,如果没有,先动态的将该字符串添加到常量池,然后再返回。
System.out.println(c==d);//false
System.out.println(c==e);//true
System.out.println(c==f);//false
System.out.println(c==h);//true

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值