Java if-else控制语句

时间:2014-02-22 14:42:34

标签: java if-statement

我是java的新手,我需要一些帮助。我创建了一个类;

public class asdd {
    String name;
    String Lastname;
    int age;

    public asdd(String value1,String value2,int value3){

        this.name=value1;
        this.Lastname=value2;
        this.age=value3;
    }

}

然后我写了一些代码来做实践,但我遇到了如下控制语句的问题。虽然输入是"迈克"我的程序绕过if并运行else语句。 感谢。

import java.util.Scanner;

public class dd {

    public static void main(String[] arguments){

      asdd person=new asdd("mike","angel",21);
      Scanner input= new Scanner(System.in);
      String control=input.nextLine();

      if (control==person.name)
        System.out.println("hi baby");
      else
        System.out.println(person.Lastname);

   }    
}

此外,我在运行程序后收到错误。

4 个答案:

答案 0 :(得分:4)

由于此网站上的快速搜索会很快显示,您应该使用equals()对象String对象代替== 。前者按字典顺序比较字符串,而后者比较对象引用。所以你想要:

if (control.equals(person.name))

而不是:

if (control==person.name)

顺便说一句,班级名称应以大写字母开头,而不是小写字母。此外,您还应明确指定Asdf类变量的可见性:具体而言,最好只通过getter访问它们,而不是像您一样直接访问它们。

答案 1 :(得分:1)

使用String.equals()比较Java中的字符串文字,而不是==像这样更改代码

if(control.equals(person.name))

答案 2 :(得分:1)

可悲的是,java不是javascript,也不是其他许多合理使用==的语言。

==比较identity - 仅当两个对象是相同的对象时才为true。

应使用

.equals()来比较

if (control.equals(person.name))

一般认为java不会像你期望的那样使用==的“错误”。对于其他一些java“错误”,请参阅this answer

答案 3 :(得分:0)

==运算符用于数值。对于字符串,请使用.equals方法:

    String s1 = "value", s2 = "value";
    if (s1.equals(s2)) {
      // do your code here
    }