关于java:打印对象的引用

Printing reference to an object

本问题已经有最佳答案,请猛点这里访问。

我是Java新手。比如说,我有一个班级的学生。我想打印

1
2
Individual ind = new Individual();
System.out.println(ind);

上面的代码给出如下输出:

1
Individual@1922221

  • 这有什么意义?
  • 它是某种唯一的身份证吗为了那个目标?
  • 我可以定制这个吗?我的意思是写一个函数我自己的打印输出?
  • 如果有,我怎么办这个?

  • 如果要打印任何对象的有意义的内容,必须实现自己的toString()方法,它将重写父类(Object类的toString()方法。默认情况下,所有类(无论您创建什么)都扩展Object类。

    样本代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public class Individual {
        private String name;
        private String city;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            builder.append("Name of Individual :").append(this.getName())
                    .append("
    City :"
    ).append(this.getCity());
            return builder.toString();
        }
        public static void main(String[] args) {
            Individual individual = new Individual();
            individual.setName("Crucified Soul");
            individual.setCity("City of Crucified Soul");
            System.out.println(individual);
        }
    }

    输出:

    1
    2
    Name of Individual :Crucified Soul
    City :City of Crucified Soul

    如果有更大的类和许多变量,可以使用xstream来实现toString()方法。XStream将以XML格式打印有意义的对象。甚至可以将它们解析回等效的对象。希望这对你有帮助。


    这是默认toString()方法的结果-classname+hashcode。这可以通过重写ToString()来重写。

    请参考:http://www.javapractices.com/topic/topication.do?ID=55


    由于还没有解释过,重写toString()方法只意味着在类中创建自己的toString()方法。通过在你的类中放置你自己的toStReg()版本,你就可以让Java使用你的toStReg()方法而不是默认的方法。但是,由于原始toString()方法返回字符串,所以toString()方法还必须返回字符串。您的个人类如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Individual{

        //any other code in the class

        public String toString(){
             return"your string";
        }

    }

    然后,当您调用System.out.print(ind)时,它将打印出您的字符串。


    我认为你想改写个人的字符串。参见http://DOCS.Oracle .COM/JavaSe/ 6 /DOCS/API/Java/Lang/Objult.html