Java 字符串更改为null

Java 字符串更改为null,java,Java,早上好,我正在使用下面的构造函数代码,出于某种原因,“position”变量在每次创建新对象时都设置为null 这是我的班级代码 public class Employee { private String name; private int idNumber; private String department; private String position; public Employee(String nam, String depart, St

早上好,我正在使用下面的构造函数代码,出于某种原因,“position”变量在每次创建新对象时都设置为null

这是我的班级代码

public class Employee
{
    private String name;
    private int idNumber;
    private String department;
    private String position;

    public Employee(String nam, String depart, String posi, int id)
    {
       name = nam;
       department = depart;
       posi = position;
       idNumber = id;    
    }
} 
这是我用来创建对象的线

Employee sMeyers = new Employee("Susan Meyers", "Accounting", "Vice President", 47899);
应该是

position=posi

而不是

posi=位置


您在这里将一个空变量(
position
)赋给一个不可变参数(
posi
)。

对于构造函数参数
posi
,您希望获取该值并将其赋给在本例中为
position
的类字段之一。现在,您要做的是将
位置
(为空)分配给
posi
。所以你用null覆盖了你的参数,而不是用它做任何事情

您希望执行以下操作:

position = posi;
它将构造函数参数,即
“副总裁
分配给类字段
位置


请记住,右侧的变量被分配给左侧的变量。

这是因为您使用了以下语句:

posi = position;
换成

position =posi;

使用“this”指针避免这些错误。愉快地编码!!

其他答案已经说明您的错误是

posi = position
Luiggi Mendoza也发表评论说,你应该使用“this”

我只想给你们一个完整的例子,说明应该如何做

public class Employee
{
    private String name;
    private int idNumber;
    private String department;
    private String position;

    public Employee(String name, String department, String position, int idNumber)
    {
       this.name = name;
       this.department = department;
       this.position = position;
       this.idNumber = idNumber;    
    }
} 
通过这种方式显式访问类变量也省去了创建新变量名(如“nam”和“pos”)的麻烦