初学者Java字符串

Eda*_*aur -2 java string

可能重复:
如何比较Java中的字符串?

所以,我对测试运算符和字符串有疑问.我正在尝试编写一个程序,用于输入"男孩"或"女孩"的用户输入.当用户输入"男孩"时,输出应为"你是个男孩".当用户输入"女孩"时,输出应为"你是女孩".

但是,当我编译并运行程序时,无论我输入什么,输出总是"你是女孩".

这是因为字符串没有像整数那样的实际值,因此测试运算符不能用来比较它们吗?

另外,有没有像java中的python的断言函数?

import java.util.Scanner;

class apples{
    public static void main(String args[]){
        System.out.println("Are you a boy or a girl?");
        Scanner lalala = new Scanner(System.in);
        String text = lalala.nextLine();

        if (text == "boy"){
            System.out.println("You are a boy.");
        }
        else{
            System.out.println("You are a girl.");
        }



    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢〜

Jay*_*han 6

使用

text.equals("boy")
Run Code Online (Sandbox Code Playgroud)

代替

 if (text == "boy")
Run Code Online (Sandbox Code Playgroud)

原因是,在Java中,==总是只比较两个引用(对于非基元,即) - 即它测试两个操作数是否引用同一个对象.

但是,可以覆盖equals方法 - 因此两个不同的对象仍然可以相等.

但更好的选择是使用equalsIgnoreCase,原因是用户可以输入boy或BOY或Boy或任何其他组合.equalsIgnoreCase方法只是忽略大小写并比较两个字符串.

text.equalsIgnoreCase("boy")
Run Code Online (Sandbox Code Playgroud)