在这篇博文中,我们将通过实例学习将对象内容打印成字符串。
一个Java类是一组属性和方法,它是一个对象的蓝图。一个对象是用java中的类创建的。
当项目开发过程中出现问题时,必须将java对象打印到控制台,以检查实际值,以便进一步调试。默认情况下,如果你使用System.out.println或logger语句打印一个对象,它显示的格式为packagename.classname@hashcode
如果User.java类在com.mycompany中声明:
package com.mycompany;
public class User {
private String name;
public String getName(){
return name;
}
pblic void setName(String name){
this.name=name
}
}
如果你打印上述类的对象,其输出如下
com.mycompany.User@8e61f1a2
这对对象值的调试没有帮助。
如何在没有com.mycompany.User@8e61f1a2的情况下打印java对象内容?
这篇文章涵盖了显示java对象内容的多种方法。
- Java.lang.Object toString()方法
如何使用toString()方法打印Java对象
Java.lang.Object是java语言中所有其他类的基类,所以每个java类都默认扩展了这个类。
toString() toString()是java.lang.object类中的一个方法,所有java类默认都有这个方法,你可以在自定义类中覆盖这个方法。
如果你用toString()方法调用任何对象,它只是给出类的名称+@符号+该类的哈希代码。
我们不会得到任何有用的信息来检查一个对象的数据。默认情况下,当你打印一个对象或object.toString()方法时,它总是给出类的哈希代码,如下所示。
这个类没有提供toString()方法的实现。它调用 java.lang.object.toString() 行为。
public class Employee {
private Integer id;
private String name;
public Employee(String name) {
this.name=name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Employee emp=new Employee();
System.out.println(emp);
System.out.printl/n(emp.toString());
输出是
Employee@1517365b
Employee@1517365b
使用自定义的toString()方法将对象内容打印成字符串。
重载toString()方法以包括所有你想打印到控制台的字段。下面这个例子解释了
- 如何重写toString()方法来打印对象 - toString()方法
- 如何将java对象打印成一个字符串对象
public class Employee {
-----------------
@Override
public String toString() {
return "Employee("+name+")";
}
}
Employee emp=new Employee();
emp.setName("kiran");
System.out.println(emp);
System.out.println(emp.toString());
输出是
Employee@1517365b
Employee@1517365b
Java数组对象打印示例
如果有一个由多个对象组成的数组,需要打印所有的对象。迭代每个对象并打印只是为了调试的目的,这看起来不是很好。
下面的例子解释了
- 如何打印单个数组对象 - Arrays.toString() 方法
- 如何打印一个多维的对象数组Arrays.deepToString() 方法
Arrays.toString()方法 - 返回数组中每个对象的字符串表示 Arrays.deepToString()方法 - 返回多维数组中每个对象的字符串表示 - 数组元素包含一个数组的元素
import java.util.Arrays;
public class EmployeeTest {
public static void main(String[] args) {
Employee[] emps = { new Employee("Kiran"), new Employee("John") };
System.out.println("java Array of Object print example");
System.out.println(Arrays.toString(emps));
System.out.println("java multi dimensional Array of Objects print example");
Employee[][] emps1 = new Employee[2][2];
emps1[0][0] = new Employee("one");
emps1[0][1] = new Employee("two");
emps1[1][0] = new Employee("three");
emps1[1][1] = new Employee("foour");
System.out.println(Arrays.deepToString(emps1));
}
}
输出是
java Array of Object print example
[Employee(Kiran), Employee(John)]
java multi dimensional Array of Objects print example
[[Employee(one), Employee(two)], [Employee(three), Employee(foour)]]
对象集合的打印示例
集合可以是set、Map和List。当你打印集合对象到控制台时,它将对每个元素调用toString()。
下面这个例子解释了
- 如何打印对象的数组列表到控制台
- 如何打印对象的集合到控制台
- 如何打印对象的Map到控制台
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class EmployeeTest {
public static void main(String[] args) {
System.out.println("java ArrayList of Objects print example");
List empList = new ArrayList<>();
empList.add(new Employee("one"));
empList.add(new Employee("two"));
System.out.println(empList);
System.out.println("java Set of Objects print example");
Set empSet = new HashSet<>();
empSet.add(new Employee("three"));
empSet.add(new Employee("four"));
System.out.println(empSet);
System.out.println("java Map of Objects print example");
Map empMap = new HashMap();
empMap.put(1, new Employee("five"));
empMap.put(2, new Employee("six"));
System.out.println(empMap);
}
}
输出是
java ArrayList of Objects print example
[Employee(one), Employee(two)]
java Set of Objects print example
[Employee(three), Employee(four)]
java Map of Objects print example
{1=Employee(five), 2=Employee(six)}
ToStringBuilder类--将一个java对象的所有字段打印成字符串
ToStringBuilder类定义了apache commons库。
ToStringBuilder.reflectToString方法使用ToStringStyle.SHORT_PREFIX_STYLE将一个java对象的所有字段打印成字符串,使用
ToStringStyle.JSON_STYLE类将其打印成JSON。
下面这些例子解释了
- 如何将java对象的所有字段打印成字符串 - toStringStyle.SHORT_PREFIX_STYLE
- 如何将java对象打印成JSON字符串 - ToStringStyle.JSON_STYLE
public class Employee {
@Override
public String toString () {
return ToStringBuilder.reflectionToString(this,ToStringStyle.SHORT_PREFIX_STYLE);
}
public String toJson () {
return ToStringBuilder.reflectionToString(this,ToStringStyle.JSON_STYLE);
}
}
Employee emp = new Employee("one");
System.out.println(emp.toString());
System.out.println(emp.toJson());
输出
Employee[name=Kiran,id=1]
{"name": "Kiran", "id": 1}