Java 为什么输出错误(get/set方法)

Java 为什么输出错误(get/set方法),java,Java,只是通过get/set方法,我的输出有问题。它不显示对象的名/姓,而是显示null/null 谁能提供一些见解,我不熟悉get/set方法 代码 这是我的类,用于创建对象并运行toString方法 public class PersonDriver { public static void main(String[]args){ Person p1 = new Person ("Thomas", "Brown"); System.out.print(p1.toString(

只是通过get/set方法,我的输出有问题。它不显示对象的名/姓,而是显示null/null

谁能提供一些见解,我不熟悉get/set方法

代码

这是我的类,用于创建对象并运行toString方法

public class PersonDriver {

public static void main(String[]args){

    Person p1 = new Person ("Thomas", "Brown");

    System.out.print(p1.toString());
 }
}

您需要将参数分配给实例变量,而不是相反。您当前正在做的是重新分配传递给构造函数的a和b,而您需要将a和b的值分配给类的firstName和lastname字段

public Person (String a, String b){
    firstName = a;
    lastName = b;
}

您的设置程序应该接受一个参数—要设置的值。您的构造函数应该将参数的值分配给类属性,而不是相反。

我认为构造函数必须像

public Person (String a, String b){
    firstName = a;
    lastName = b;
}

您在构造函数中反转了变量

您需要更改以下代码

public Person (String a, String b){

   a = firstName;
   b = lastName;
}


你需要交换变量。将对象的值指定给参数

public Person (String a, String b){

firstName= a;
lastName= b;
}
此外,如果没有参数,设置方法也没有用处:

public void setlastName(String parameter){

this.lastName = parameter;

}

主要是设置者必须

public void setFirstName(String firstName){

     this.firstName = firstName;
}


public void setLastName(String lastName){

    this.lastName = lastName;
}

你确定你的方法不应该更符合这个

public class Person {

  private String firstName;
  private String lastName;    

  public Person (String a, String b){

   firstName=a;
   lastName=b;
  }

  public String getfirstName(){

    return firstName;
  }

  public void setfirstName(String firstName){

    this.firstName = firstName;
  }

  public String getlastName(){

    return lastName;
  }

  public void setlastName(String lastName){

    this.lastName = lastName;
  }

  public String toString() {

  String s = "First name:" + firstName + "Last name:" + lastName;
  return s;

  }
  }

您需要将要设置变量的值传递给setter方法。除此之外,与前面提到的其他变量一样,您交换了构造函数中的变量名:

哦,他们走错了路。现在我觉得自己很愚蠢。谢谢。类变量只不过是静态变量。@AjayThakur-您有实例变量类变量,这些变量对于类的每个实例都是唯一的,而静态变量对于类的所有实例都是通用的。@R.J从某种意义上说,根据at,他是对的lest@IvayloStrandjev-我只是想澄清一下,我不是那个意思,我把它改为实例变量。这个定义清楚地说明了类变量不是实例变量。在getter和setter方法中,一般约定set/get之后的第一个字母应该以大写字母开头,例如setLastName/getlastname请将set/get名称的第一个字母设为大写字母,如setFirstName+1
public void setFirstName(String firstName){

     this.firstName = firstName;
}


public void setLastName(String lastName){

    this.lastName = lastName;
}
public class Person {

  private String firstName;
  private String lastName;    

  public Person (String a, String b){

   firstName=a;
   lastName=b;
  }

  public String getfirstName(){

    return firstName;
  }

  public void setfirstName(String firstName){

    this.firstName = firstName;
  }

  public String getlastName(){

    return lastName;
  }

  public void setlastName(String lastName){

    this.lastName = lastName;
  }

  public String toString() {

  String s = "First name:" + firstName + "Last name:" + lastName;
  return s;

  }
  }