java字符串常量池以及==和equals区别

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
(跟用new的不一样,new不是放在字符串常量池的哦)
对于基本类型来说,==是进行数值的比较。
对于引用类型(eg:String)来说,==是进行【地址值】的比较。
插一句:方法放在栈里的,创建对象(new一个)才是放堆里
超类也是父类的意思
在这里插入图片描述

==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法:

public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true;否则返回false。
注意事项:

  1. 任何对象都能用Object进行接收。
  2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
  3. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
    推荐:“abc”.equals(str) 不推荐:str.equals(“abc”)

public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。

equals只是比较内容=不=,不比较地址等不等,与“==”有区别的
代码区别:

在这里插入图片描述

三、equals比较对象的话:

可参考:https://blog.csdn.net/QLBFA/article/details/109345588

class Person{
    String name;
}
public class settest {
    public static void main(String[] args) {
        Person p1=new Person();
        Person p2=new Person();
        System.out.println(p1.equals(p2)); //false
    }
}

比较对象是不等的:因为equals的源码是:在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值