java - 未使用局部变量的值

标签 java

我正在学习 java,在类里面我们开始使用多个类...... 我有一个带有默认构造函数的员工类。其中我有带有默认值的变量。我遇到的问题是默认构造函数中的变量值没有被使用,所以我在变量下得到黄色下划线。有人可以引导我走向正确的方向吗?

package week2;

import java.text.NumberFormat;

public class Employee {

    //Instance Variables
    private String firstName = "", lastName = "";
    private char gender = 'U';
    private int dependents = 0;
    private double annualSalary = 0;

    //Default Employee Constructor 
    public Employee() {
        String firstName = "not given";
        String lastName = "not given";
        char gender = 'U';
        int dependents = 0;
        double annualSalary = 20000;
    } //End of default Employee Constructor

    //Employee Constructor with variables
    public Employee(String firstName, String lastName, char gender, int dependents, double salary) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.gender = gender;
        this.dependents = dependents;
        this.annualSalary = salary;
    } //End of Overloaded Employee Constructor

    //Calculate Pay
    public double annualSalary() {
        return (getAnnualSalary() / 52);
    } //End Calculate Pay

    //Display Employee
    public void displayEmployee() {
        NumberFormat nf = NumberFormat.getCurrencyInstance();

        System.out.println("First Name: \t" + this.firstName);
        System.out.println("Last Name: \t" + this.lastName);
        System.out.println("Gender: \t" + this.gender);
        System.out.println("Dependents: \t" + this.dependents);
        System.out.println("Annual Salary: \t" + nf.format(this.annualSalary));

        System.out.println("Weekly Pay: \t" + nf.format(annualSalary()));
    } //End Display Employee


    //Getters and Setters
    //Get-Set firstName
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    //Get-Set lastName
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    //Get-Set Gender
    public char getGender() {
        return gender;
    }
    public void setGender(char gender) {
        this.gender = gender;
    }

    //Get-Set dependents
    public int getDependents() {
        return dependents;
    }
    public void setDependents(int dependents) {
        this.dependents = dependents;
    }

    //Get-Set annualSalary
    public double getAnnualSalary() {
        return annualSalary;
    }
    public void setAnnualSalary(double annualSalary) {
        this.annualSalary = annualSalary;
    }
}

最佳答案

您正在默认构造函数中创建局部变量。删除声明,它将为类级别变量赋值。

//Default Employee Constructor 
public Employee() {
    firstName = "not given";
    lastName = "not given";
    gender = 'U';
    dependents = 0;
    annualSalary = 20000;
} //End of default Employee Constructor

注意:黄色表示警告。在您的情况下,它暗示您正在创建局部变量并为其赋值,这在您的构造函数中不使用,并且局部变量在构造函数外部不可见。

<小时/>

如果没有使用相同名称定义其他局部变量,则可以使用 this.firstNamefirstName。 (您可以在您的情况下在默认构造函数中使用它们)

如果某个局部变量使用相同的名称定义,则 firstName 引用局部变量,而 this.firstName 引用类级别变量。(您可以在参数化构造函数)

关于java - 未使用局部变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30236100/

相关文章:

java - 使用 Hibernate 保存对象

java - ResultSet 可以用于直接填充表吗?

java - 在android中更改按钮颜色及其文本颜色

java - 将 Git 消息保存在 java 变量中

java - 通过方法改变变量

Java HashMap 迭代 Map.Entry<> 与 Entry<>

重命名后找不到Java主类

java - 为什么 Android 中不缓存 JSON 异常?

java - 使用 hibernate 时出现意外行为

java - JAXB 重复类重命名