Java substring方法的问题

public class Demo {
    public static void main(String[] args) {
        String Dx = "ABCDGERG";
        String Xx = "ABCDGERG";
        if ((Dx.substring(0, 3)) == (Xx.substring(0, 3))) {
            System.out.println("两个子串相同");
        } else {
            System.out.println("两个子串不相同");
        }
        
        String AAA = Dx.substring(0, 3);
        System.out.println(AAA);
        String BBB = Xx.substring(0, 3);
        System.out.println(BBB);
        if (AAA == BBB) {
            System.out.println("两个子串相同");
        } else {
            System.out.println("两个子串不相同");
        }

                
    }
}
-------------------------------------------------------------------------------

Console;

两个子串不相同
ABC
ABC
两个子串不相同
两个子串不相同
--------------------------------------------------------------------------------------------------------------------------------------------------------------

为啥我的输出结果都是不相等的? , 如果我用substring(0) 一个参数的话 对比又都是相同的。 明明字符串都一样呀~ 

字符串默认是新建字符串,开辟新的内存空间存储, 这时候equals内容相等,但是==不同,不是同一个字符串所以不同

首先要搞清楚==和equals的区别,==一般用于8种基本数据类型byte,char,short,int,long,float,double,boolean的值是否相等,还有就是判断对象的内存地址是否相等;equals一般用于判断字符串的内容是否相等,还有就是判断对象的值是否相等,这时候需要重载equals方法。

更详细的相关内容可以参考:https://edu.csdn.net/course/detail/2981

欢迎关注我哈

再追加这个解释,你可以调用intern()方法,让字符串使用内存中已有字符串,这时候==就是相同的了

 

== 是比较内存地址, 使用equals比较的是内容

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,欢迎您加入CSDN!

目前问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632