Java中Object的输出问题

简介: 今天一个同学读取List中的一个对象,直接用于输出。输出结果是Student@c17164,现在来分析一下哈。 1.Object类   类Object是类层次结构的根类。每个类都使用Object作为超类。

今天一个同学读取List<Object>中的一个对象,直接用于输出。输出结果是Student@c17164,现在来分析一下哈。

1.Object类

  类Object是类层次结构的根类。每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。 

2.Object类的toString()方法

  public String toString()
  返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。

  换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())

3.System.out.print

  (1)System.out得到的是一个Static PrintStream静态类。

  (2)PrintStream中的方法public void print(Object obj)

   打印对象。按照平台的默认字符串编码将 String.valueOf(Object) 方法生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。

   其实还是调用toString方法,也就是执行System.out.println(obj);与System.out.println(obj.toString());方法的结果是一样的。

4.代码示例

public class ObjectTest{ 
    public static void main(String[] args) { 
        //处理常见数据类型
        String text="22";
        System.out.println(text);    //输出:22
            
        //处理Student对象,没有重写toString()方法
        Student stu=new Student("学生");
        System.out.println(stu);    //输出:Student@c17164
        System.out.println(stu.name);    //输出:学生
        
        //处理Teacher对象,重写toString()方法
        Teacher tea=new Teacher("老师");
        System.out.println(tea);    //输出:老师
        System.out.println(tea.name);    //输出:老师
    }
}

//Student类
class Student{
    String name;
    public Student(String name) {
        this.name = name;
    }
}

//Teacher类
class Teacher{
    String name;
    public Teacher(String name) {
        this.name = name;
    }
    public String toString()
    {
        return name;
    }
}

5.总结

  上例中,Student类没有重写toString()方法,输出对象结果为:Student@c17164

  上例中,Teacher类重写toString()方法,输出对象结果为:老师

  Double,String,Integer等java自带的类都重写了Object超类的toString()方法,可以直接输出其中内容。

   在程序中要直接输出类对象,可以在类中重写toString()方法,定制自己的输出。

相关文章
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
91 4
|
2月前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
89 20
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
4月前
|
JSON 前端开发 Java
java系列之 页面打印出 [object Object],[object Object]
文章解释了在前端页面打印JSON对象时出现`[object Object]`的原因,并提供了使用`JSON.stringify(json对象)`方法将对象转换为可读字符串的解决方案。
java系列之 页面打印出 [object Object],[object Object]
|
4月前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
46 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
4月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
41 5
|
4月前
|
Java API
【Java】Object、Objects、包装类、StringBuilder、StringJoiner
【Java】Object、Objects、包装类、StringBuilder、StringJoiner
|
5月前
|
Java
Java中的Object类 ( 详解toString方法 | equals方法 )
Java中的Object类 ( 详解toString方法 | equals方法 )
|
7月前
|
存储 算法 Java
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
【5月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
56 2
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
|
6月前
|
Java
【Java】Object类简单解析
【Java】Object类简单解析
66 1