【Java】Java中==和equals的区别

编程学习日记

2020年11月10日
整理关于equals方法和==运算符进行字符串比较的用法的备忘录。

“==和epuals的不同”

我们立即进入正题。当使用int类型、char类型等原始类型比较两个值是否相等时,使用==运算符。而对于String类型等引用类型,则使用equals方法来进行比较。

当使用==运算符比较String类型等引用类型时,并非比较值是否相等,而是比较引用所指的位置是否相同。

我们可以通过示例代码来实际运行验证一下。

public static void main(String[] args) {
    // String型変数のstr1とstr2を同じ文字列で初期化
    String str1 = "hello";
    String str2 = "hello";

    if(str1 == str2)
        System.out.println("str1=str2 (==で比較) ");
    else
        System.out.println("str1≠str2 (==で比較) ");

    // 同じ文字列を追加
    str1 += "!";
    str2 += "!";

    if(str1 == str2)
        System.out.println("str1=str2 (==で比較) ");
    else
        System.out.println("str1≠str2 (==で比較) ");

    if(str1.equals(str2))
        System.out.println("str1=str2 (equalsで比較) ");
    else
        System.out.println("str1≠str2 (equalsで比較) ");
}
str1=str2 (==で比較) 
str1≠str2 (==で比較) 
str1=str2 (equalsで比較) 

在Java中,我们将两个String类型的变量str1和str2初始化为相同的字符串,并添加相同的字符串。如果我们使用”==”运算符进行比较,将返回false;如果我们使用equals方法进行比较,则返回true。尽管在声明和初始化时,String类型被视为伪基本类型,但是在添加字符串时,它被视为引用类型。因此,即使值相同,但是引用指向不同,所以使用”==”运算符进行比较会返回false。

文献引用

基本类型的比较与引用类型的比较
【速习Java】”==”和”equals”的区别(还解释了否定的方法)

广告
将在 10 秒后关闭
bannerAds