Java条件语句
可能重复:Java条件语句,java,Java,可能重复: 我正在使用jcreator来练习java语言。我提出了一个条件语句,其中如果用户输入为=“test”,它将打印一条“ok!”消息。这是我的代码: class conditional { public static void main (String[] args) { Scanner user_input = new Scanner(System.in); String username; System.out.prin
我正在使用jcreator来练习java语言。我提出了一个条件语句,其中如果用户输入为=“test”,它将打印一条“ok!”消息。这是我的代码:
class conditional {
public static void main (String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username == "test") {
System.out.println("okay");
}
else {
System.out.println("not okay");
}
}
上面的代码没有显示任何错误,也没有显示“OK”和“not okay”消息。我不确定我的逻辑有什么问题。你应该在这里使用
否则,您将比较对象的标识,而不是它们的语义。实际上,这里有两个独立的字符串,它们满足语义平等性。您应该在这里使用
否则,您将比较对象的标识,而不是它们的语义。事实上,这里有两个独立的字符串
,它们满足语义平等性。字符串应使用.equals
而不是=
进行比较。这是所有非原始比较的情况。例如,您可以将两个int
字段与=
进行比较,但由于字符串不是基本的,.equals
是正确的选择
if (username.equals("test")) {
应该使用.equals
而不是=
来比较字符串。这是所有非原始比较的情况。例如,您可以将两个int
字段与=
进行比较,但由于字符串不是基本的,.equals
是正确的选择
if (username.equals("test")) {
或者如果您想使用==
dousername.intern()代码>然后您可以使用==
注意:不建议仅用于仅供参考。或者如果您想使用==
dousername.intern()代码>然后您可以使用==
注意:这不是仅供参考的推荐方法。正如@veer所说,
如果(username.equals(“test”){…}
或
您可以使用/
正如@veer所说,
如果(username.equals(“test”){…}
或
您可以使用/
要比较字符串,需要使用.equals()
方法,如果需要忽略字符串中字母的大小写,也可以使用.equalsIgnoreCase()
要比较字符串,需要使用.equals()
方法,如果需要忽略字符串中字母的大小写,也可以使用.equalsIgnoreCase()
如果您这样做,它将起作用:
导入java.util.Scanner
class Conditional {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username.equals("test")) {
System.out.println("okay");
} else {
System.out.println("not okay");
}
user_input.close();
}
}
几句话:
- 类名应以大写字母开头
- 使用
equals
比较String
s
- 您声明根本不打印任何结果。您必须在控制台中单击以键入答案,并用Enter结束输入
如果您这样做,它将起作用:
导入java.util.Scanner
class Conditional {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username.equals("test")) {
System.out.println("okay");
} else {
System.out.println("not okay");
}
user_input.close();
}
}
几句话:
- 类名应以大写字母开头
- 使用
equals
比较String
s
- 您声明根本不打印任何结果。您必须在控制台中单击以键入答案,并用Enter结束输入
始终使用.equals()表示字符串==表示参考可比性始终使用.equals()表示字符串==表示参考可比性不username.intern()代码>--这是一条语句。您需要在比较中使用username.intern()
的结果。也就是说,内部化的字符串存储在堆的一个特殊部分,不需要进行垃圾收集。因此,如果字符串
内部包含对较大的char[]
的引用(通常是String.substring
results),您可能会在未意识到的情况下浪费大量内存。而不是username.intern()代码>--这是一条语句。您需要在比较中使用username.intern()
的结果。也就是说,内部化的字符串存储在堆的一个特殊部分,不需要进行垃圾收集。因此,如果字符串
内部包含对较大的字符[]
(通常是字符串.substring
结果)的引用,则可能会在未意识到的情况下浪费大量内存。何时以及如何使用==?何时以及如何使用==?
class Conditional {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username.equals("test")) {
System.out.println("okay");
} else {
System.out.println("not okay");
}
user_input.close();
}
}