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”)
。您可以在堆栈溢出上找到关于它们之间差异的许多信息,例如:(更多信息,请访问)。