我有一个类定义如下:
public class Person {
private String name;
// constructor and getter/setter omitted
}
Run Code Online (Sandbox Code Playgroud)
我试图打印我的班级实例:
System.out.println(myPerson);
Run Code Online (Sandbox Code Playgroud)
但我得到了以下输出:com.foo.Person@2f92e0f4.
当我尝试打印一个Person对象数组时发生了类似的事情:
Person[] people = //...
System.out.println(people);
Run Code Online (Sandbox Code Playgroud)
我得到了输出: [Lcom.foo.Person;@28a418fc
这个输出是什么意思?如何更改此输出以使其包含我的人名?我如何打印我的对象集合?
注意:这是关于此主题的规范问答.
我无法理解并使我的程序的这个功能起作用.我正在创建一个库,我首先将多个对象输入到数组列表中.对象包括媒体的标题和格式.我需要能够搜索我的数组列表中的对象来查找特定对象并将该对象标记为"签出".我一直在研究迭代器,并试图了解如何让它们在对象中找到指定的标题,但我遇到了麻烦.当我尝试println(it.next())时,我得到MediaItem @ 3c4568f8; 所以我知道返回正确的信息格式存在问题.任何有关如何搜索我的项目数组列表中的对象的帮助将不胜感激.
import java.util.Iterator;
import java.util.Scanner;
import java.util.ArrayList;
public class Library {
static ArrayList<MediaItem> items = new ArrayList<MediaItem>();
static int menuOption;
static Scanner scan = new Scanner(System.in);
public static void main(String args[]) {
String title, format, loanedTo, dateLoaned;
boolean right = false;
do {
displayMenu();
if (menuOption == 1) {
System.out.println("Enter Title: ");
title = scan.next();
System.out.println("Enter format: ");
format = scan.next();
addNewItem(title, format);
} else if (menuOption == 2) {
System.out.println("Enter the item title");
title = scan.next(); …Run Code Online (Sandbox Code Playgroud) 快速提问:
public class AppendStringBuilder {
public static void main(String args[]){
StringBuilder sb1 = new StringBuilder();
sb1.append("java");
sb1.append(new Person("Oracle"));
System.out.println(sb1);
}
}
package hello;
public class Person {
String name;
Person(String str){
name = str;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:javahello.Person@2c538cc2
这背后的原因?不打印JavaOracle