检测String字符串是否相等

检测String字符串是否相等

使用equals方法检测两个字符串是否相等

JDK1.8

public class Demo1 {
    public static void main(String[] args) {
        // 检测字符串是否相等
        String str1 = "五月天";

        String str2 = "五月天";

        System.out.println(str1.equals(str2));
        System.out.println("五月天".equals(str1));
        System.out.println(str1.equals("五月天"));
    }
}

equals方法是比较String的字面量是否相等,所以输出结果都为true。

不能用 == 判断字符串是否相等

public class Demo1 {
    public static void main(String[] args) {
        // 检测字符串是否相等
        String str1 = "五月天";
        String str2 = "五月天";
        System.out.println(str1 == str2);
        System.out.println(str1.substring(0, 1));
        System.out.println(str1.substring(0, 1) == "五");
        
        String str3 = str1 + "";
        System.out.println(str3);
        System.out.println(str3 == str1);
    }
}

运行结果
在这里插入图片描述
原因

使用==是比较两个字符串的存储地址是否相等;
虚拟机始终将没有进行任何操作的相同字符串共享,所以判断str1 == str2结果为true。但是它们不是同一对象,它们只是共享了同一地址的同一变量;
若对字符串进行了+或substring等操作后,得到的字符串是不共享的,虽然字符串字面量相等,但是它们的变量地址是不同的,所以判断str1.substring(0, 1) == "五"和str3 == str1都为false!

使用equalsIgnoreCase判断字符串是否相等(不区分大小写)

public class Demo1 {
    public static void main(String[] args) {
        // 检测字符串是否相等
        String MayDay = "MayDay";
        String mayday = "mayday";
        System.out.println(MayDay.equalsIgnoreCase(mayday));
    }
}

MayDay.equalsIgnoreCase(mayday),输出true。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值