java - 再次在 Java 中进行字符串比较

标签 java string

新手问题,但我有这段代码:

import java.util.*;
import java.io.*;

public class Welcome1  
{
   // main method begins execution of Java application
   public static void main( String[] args )
   {
      String confirm = "y";
      while(confirm=="y")
      {
         System.out.println( "Welcome to Java Programming!" );
         System.out.println( "Print Again? (y/n)" );
         Scanner input = new Scanner(System.in);
         confirm = input.nextLine();
      }
   }
}

当用户在询问时输入“y”时,我只需要简单地再次打印欢迎消息。 但它不起作用。有什么想法吗?

最佳答案

在 Java 中,基本类型(int、long、boolean 等)使用 == 进行相等性比较,而对象类型(String 等)使用equals() 方法。如果您使用 == 比较两个对象类型,您检查的是身份,而不是相等性——也就是说,您将验证这两个对象是否完全相同内存中的引用(因此是同一个对象);通常,您需要的只是验证它们的 是否相同,为此您可以使用equals()

作为一种良好的编程习惯,最好像这样比较字符串,翻转字符串的顺序:

while ("y".equals(confirm)) {

通过这种方式,即使 confirm 为 null,您也可以确保比较有效,从而避免潜在的 NullPointerException

关于java - 再次在 Java 中进行字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702986/

相关文章:

java - 如何对Map of Map使用双括号初始化

string - 如何将字符串转换为 Io 中的列表?

c - 将内存分配给C中的字符串数组

c - 如何使用 printf 打印非空终止字符串?

java - ReplicaFetcher 崩溃 - 第一个偏移量 XXXXXXX 小于下一个偏移量 YYYYYYYY

java - 如何使用 Graphics 类填充三角形 (Java)

java - 自定义内容提供者和拒绝权限异常(exception)

java - 可从所有其他类访问的类

Javascript:文本字符串到字符数组

C++:字符串结构的相等性