获取垃圾输出Java

时间:2014-02-18 01:09:24

标签: java

我正在尝试用Java实现构造函数,我不知道我做错了什么,但是我一直在垃圾输出。

这是我正在尝试将值赋给的变量:

private static Employee employee;

这就是我试图分配的方式:

employee = new Employee(empType, empFName, empLName, empBDate, empGender, empHireDate, empReleaseDate, empBaseSalary);

这是类和构造函数:

public class Employee {

    private String Type;
    private String FName;
    private String LName;
    private Date BDate;
    private String Gender;
    private Date HireDate;
    private Date ReleaseDate;
    private double BaseSalary;


    public Employee(String type, String fname, String lname, String bdate, String gender, String hire, String release, double salary){


        this.Type = type;
        this.FName = fname.toUpperCase();
        this.LName = lname.toUpperCase();      
        this.BDate = new Date(bdate);       
        this.Gender = gender;
        this.HireDate = new Date(hire);
        if (release == "null"){
            this.ReleaseDate = null;
        }
        else if(release != "null"){
            this.ReleaseDate = new Date(release);
        }
        this.BaseSalary = salary;

    }

}

当我尝试打印时,只是为了测试它,这就是我打印它的方式:

System.out.println(employee);

这就是我每次都得到的:

Employee@4c264dd8

有人能告诉我我做错了吗?

4 个答案:

答案 0 :(得分:6)

Java不知道如何打印对象,除非您通过实现toString()告诉它该做什么。如果不这样做,它将默认为Object.toString()以获取对象的字符串表示形式。 Object.toString()返回

getClass().getName() + '@' + Integer.toHexString(hashCode())

解释了你所看到的输出。

答案 1 :(得分:1)

如果在Java中打印Object,它将打印具有十六进制值的类名。

如果你想要自己的东西,你必须覆盖toString()。

public void toString()
{
   //print here  this.Type +":"+   this.FName  for fields you want.
}

答案 2 :(得分:0)

每个Java Object都附带一个toString()方法。您将必须覆盖它以获得所需的输出。我相信对象的hashCode(内存地址)正在打印!

答案 3 :(得分:0)

来自Object.toString()docs:

  

返回对象的字符串表示形式。一般来说,   toString方法返回一个“文本表示”的字符串   宾语。结果应该是简洁但信息丰富的表示   一个人很容易阅读。建议所有人   子类重写此方法。

     

Object类的toString方法返回一个由。组成的字符串   对象是实例的类的名称,at-sign   字符“@”,以及散列的无符号十六进制表示   对象的代码。换句话说,此方法返回一个相等的字符串   价值:

getClass().getName() + '@' + Integer.toHexString(hashCode())

因此,您必须通过以下方式提供自己的toString方法:

@Override
  

public void toString(){return myString; }