gpt4 book ai didi

java - 实例方法返回十六进制而不是字符串

转载 作者:行者123 更新时间:2023-11-29 06:02:31 24 4
gpt4 key购买 nike

我正在练习学习如何编写类以及如何在对象之间创建"is"关系。在下面的代码中,第一个类“Person”定义了一个人,然后在第二个类“MarryDemo”中,我看到某人是否已婚,配偶是谁,他们的地址等。此后不久他们甚至离婚了。代码基于 Jan Skansholm Java from the Beginning 的示例。

问题是我预计 MarryDemo 中主要方法的结果是“Kris Humphries”、“43 New Jersey Jets Street”、“null”,但我得到的不是配偶姓名 Person@558ee9d6 ,配偶的地址和离婚后的配偶保持原样。

Person@558ee9d6 是什么意思?这就是名称“Kris Humphries”引用的对象的位置吗?为什么出现 Person@558ee9d6 而不是姓名?

//defines a person
public class Person {
//instance variables
private String name, address;
private Person spouse;

//constructor
public Person(string n) {
name = n;
}

//instance methods
public String getName() {
return name;
}

public void marry(Person p) {
spouse = p;
p.spouse = this;
}

public Person isMarriedTo() {
return spouse;
}

... //more methods for returning address, divorcing, etc.

}

//
public class MarryDemo {
public static void main (String[] arg) {
String name1 = "Kim Kardashian";
String name2 = "Kris Humphries";

Person p1 = new Person(name1);
Person p2 = new Person(name2);

p1.marry(p2);
System.out.println(p1.marriedTo());

p2.setAddress("43 New Jersey Jets Drive");
System.out.println(p1.marriedTo().getAddress());

p1.divorce();
System.out.println(p1.marriedTo());

}
}

最佳答案

您需要实现一个toString() 方法(因为默认值不合适)。大多数 IDE 都会为您生成一个。

What does Person@558ee9d6 signify?

对象的类名和标识。代码见 Object.toString()。

Is that the location of the object that is referenced by the name "Kris Humphries"?

与名字无关。您调用的是 Person.toString()。

Why does Person@558ee9d6 appear instead of the name?

你说你想在哪里打印名字?


如果我将 string 替换为 String 并使用 IDE 生成 toString,则默认为

@Override
public String toString() {
return "Person{" +
"address='" + address + '\'' +
", name='" + name + '\'' +
", spouse=" + spouse +
'}';
}

这显然不合适,因为它会永远存在。您可以将其更改为

@Override
public String toString() {
return "Person{" +
"address='" + address + '\'' +
", name='" + name + '\'' +
", spouse=" + spouse != null ? spouse.getName() : " {none}" +
'}';
}

关于java - 实例方法返回十六进制而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com