我是Java(和编程)的初学者,应该有一个简单的答案,但我找不到它。我想编写一个代码来打印实例变量的引用名称的值。例如:
Public class Person {
Person() {
//attributes, height, weight, etc.
}
Person Person1 = new Person();
}
我想编写一行代码来产生符合
的内容“Person1的属性是......”
System.out.println的调整(“Person1的属性”+( ???? )+“是......”)
我无法找到或创建一个返回名称Person1的方法。
答案 0 :(得分:3)
“Person1”不是实例的名称,而是保存对实例的引用的变量的名称。实例本身没有名称。如果你想保留它,你必须给它一个名字属性。
public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
然后你可以这样做:
Person person1 = new Person("Jeff");
System.out.println("Person1's name is: " + person1.getName());
输出结果为:
Person1的名字是:杰夫
答案 1 :(得分:2)
通常不可能完全按照您的意愿行事。我认为变量名甚至不会被编译到类中。
可以使用编译时注释完成,但这并非易事。
答案 2 :(得分:0)
为了能够做到这一点,你应该覆盖toString()函数 像这样的东西
/* Returns the string representation of your class object .*/
@Override
public String toString() {
return "The attributes of this person are :height - " + height + " weight - " + weight + // you are print out all your properties.
}
现在,当您想要打印对象时,您可以
System.out.println(person1);
答案 3 :(得分:0)
我不确定您对编程语言的熟悉程度。我看到你说你是Java的新手,所以我将从那里开始。与许多面向对象语言一样,Java在创建类时使用继承。在Java中,当您定义一个类时,您可以使用" extends"关键字到子类并使用或覆盖父类中的任何方法。现在,在Java中, ALL 类自动从这个名为Object的类继承。
这非常有用,因为Object包含一些有用的方法,最值得注意的是#34; toString()"。您不需要使用extends来获取这些方法顺便说一下。现在,toString本身并没有用,但你可以覆盖它来打印出你想要的东西。
public class Person
{
String name;
int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
@Override
public String toString()
{
return "Name is: " + name + "and age is: " + age";
}
}
注意我在那里定义的toString()方法?无论何时在对象上调用此方法,都会打印出该字符串。例如,在您的示例中:
Person person1 = new Person("Ford Prefect", 42);
System.out.println(person1.toString()); //Will print what we defined in toString.
你甚至不需要.toString(),只需要person1,因为JVM会意识到你打算使用toString。如果使用IntelliJ IDE,则可以执行Alt + Insert并选择toString()来覆盖它。 IDE是帮助您提高效率的绝佳工具。祝你好运!