Java 相同条件下的不同输出

Java 相同条件下的不同输出,java,Java,代码如下: package com.myprograms.test; import java.util.Scanner; public class MyProgram { public static void main(String[] args) { Scanner sIn = new Scanner(System.in); String name = ""; System.out.print("Enter the name:"

代码如下:

package com.myprograms.test;

import java.util.Scanner;

public class MyProgram {

    public static void main(String[] args) {

        Scanner sIn = new Scanner(System.in);
        String name = "";

        System.out.print("Enter the name:");
        name = sIn.next();

        if (name.equals("somename")) {
            System.out.println("Success - Case 1");
        } else {
            System.out.println("Failed - Case 1");
        }

        if (name == "somename") {
            System.out.println("Success - Case 2");
        } else {
            System.out.println("Failed - Case 2");
        }

        sIn.close();
    }

}
以下是输出:

Enter the name: somename
Success - Case 1
Failed - Case 2
问题是:

为什么在Java中,一个输入在相同条件下表现不同?是Java错误吗?

“Java错误”-真的吗

这已经解释过很多次了,这里有一个小解释:

Java
中比较字符串时,请使用
string.equals()
string.equalsignorecase()
方法

使用
=
运算符比较地址

使用
equals()
equalsIgnoreCase()时,方法比较字符串的内容

这是一个很好的解释(请阅读“会见乔曼”示例):


观察:在获得输入后,您可以关闭
扫描仪,而不是程序的最后一行,以更好地管理资源。

不仅是字符串,而且是任何对象。“为什么一个输入在相同条件下表现不同”我看不到相同的条件,
==“foo”
不同(“foo”)
。您可以在堆栈溢出上找到关于它们之间差异的许多信息,例如:(更多信息,请访问)。