String类详解——字符串比较

比较==与equals

==号的用法
  String s1 = new String("Hello Java"); //在堆空间创建对象
        String s2 = "Hello Java"; // 在常量池中创建
        System.out.println(s1 == s2); //fasle

注意==比较的是两个数组的地址。

  • 如果new的String,则会在堆空间创建对象

  • 如果是直接赋值,在常量池创建。

  • 两个String直接赋值结果?

 String s2 = "Hello Java"; // 在常量池中创建
        String s3 = "Hello Java";
        System.out.println(s2 == s3); //ture

从结果表明:如果直接赋值String的方式,创建的对象在常量池中,会从中查找是否有相同字符串,有则直接拿来。

       String s3 = "Hello " + "Java";
        String s4 = "Hello Java";
        System.out.println(s3==s4);//true

结论:用+号链接字符串时,编译会比较连接后的字符串。故结果true

   String s1 = "Hello Java"; //在堆空间创建对象
        String s4 = s2+"Java";
        System.out.println(s1 == s4);//fasle

结论:当有变量进行连接字符串时,相同字符串会在new一个,故为false

  String s1 = "Hello Java"; //在堆空间创建对象
        String s5 = s2.concat("Java");
        System.out.println(s1 == s5);//fasle

结论:当使用concat连接时,会new一个对象,故false

equals的用法

equals方法比较的是两个字符串的值。


        String s = "Hello";
        String s2  = "Hello";
        System.out.println(s == s2);//true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值