JAVA如果声明问题

时间:2012-07-26 18:15:35

标签: java

  

可能重复:
  Java String.equals versus ==

我在java中使用if语句通过询问他是男孩还是女孩的天气来确定该人是男性还是女性的天气。这是一个相当愚蠢的陈述,但我的询问是无论我输入什么,我总是得到“你是一个女性!”这很烦人。能否请你帮忙?这是代码

import java.util.Scanner;

class ifstatement {

    public static void main( String args[] ) {
        System.out.print( "please enter boy or girl as an input:" );

        Scanner x = new Scanner( System.in );
        String a = x.nextLine();

        if ( a == "boy" ) {
            System.out.print( "You are a male" );
        }
        else {
            System.out.print( "You are a female!" );
        }
     }
 }    

5 个答案:

答案 0 :(得分:4)

使用equals()方法比较String

equals()比较对象

==比较参考值

使用

if ("boy".equals(a)) {

这会将"boy" String实例与a

引用的String实例进行比较

查看

答案 1 :(得分:0)

==比较使用对象引用,两个对象是否指向相同的内存位置。 .equals()在Object类中执行相同的操作,但是,String类会覆盖它以进行值比较。

答案 2 :(得分:0)

==运算符检查对象的引用是否相等。在测试字符串相等性时,这还不够。参考相等性的测试在String.equals() method内完成,以及其他检查:

 public boolean equals(Object anObject) {
        if (this == anObject) {      // Reference equality
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {  // Are the strings the same size?
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])        // Compare each character
                        return false;
                }
                return true;
            }
        }
        return false;
  }

答案 3 :(得分:0)

如果你要说:

 if ("boy".equals(a)){
 System.out.print("You are a male");
 } else if ("girl".equals(a)){
 System.out.print("you are a female!");
 { else {
 System.out.print("invalid response!");
 }

这可以解决您的问题。处理字符串时,应始终使用.equals()来比较确切的值。 “==”运算符通常比较两个对象是否指向内存中的相同位置。由于字符串是一个对象,因此它们不相同。

答案 4 :(得分:0)

1。中,使用.equals()方法比较java对象,而Strings是Java中的对象。

2。使用a.equals("boys"),这将为您提供正确答案 ....