Java 常用api之object 的toString方法

本文详细介绍了如何在Java中避免对象输出变成`@...`,重点讲解了子类构造方法默认调用父类无参构造、toString方法的作用及重写方法。通过实例演示了在student类中重写toString方法以得到更友好的输出格式。
摘要由CSDN通过智能技术生成

object类的概述
    .object 是类层次结构的根(root),每个类都可以将object作为超类,所有类都直接或间接的继承自该类
构造方法
    .public object()
    .回想面对对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法
        因为他们的顶级父类object只有无参构造方法
查看方法的源码
    .eclipse 选中方法,右键 打开声明 或者按下 F3
    .idea 选中方法,按下ctrl+b
为什么我student s =new student();System.out.println(s);后,控制台的返回值是object.student@1d8d30f7
    .System.out.println(s) 的底层源码是public void println(Object x)此时这个x就等于s等于new student()
    .valueOf(x)的底层源码就是public static String valueOf(Object obj) 这个obj就等于=x=s=new student()
    .public static String valueOf(Object obj) 方法里面有这么一句话return (obj == null) ? "null" : obj.toString();运用了三元运算符,因为obj不等于null,所以直接执行了表达式三,也就是obj.toString(),
    .toString()的底层源码是public String toString();方法里面有这么一句话return getClass().getName() + "@" + Integer.toHexString(hashCode());,也就是你的在控制台出现的值了
解决办法
    .在student类里面面重写toString的方法
    .eclipse的快捷键是  shift+alt+s

在eclipse中添加toString的方法

在我的这篇文章中有介绍

 

Java 直接输出对象 变成@.....的解决办法_我的猴子的博客-CSDN博客
三元运算符
    .expression1 可以是计算为 boolean 值的任何表达式。如果 expression1 是 true ,那么将评估 expression2 。否则,将评估 expression3 。

以下有两个类

student类 和objectdemo类

 objectdemo类

package object;

import java.io.PrintStream;

public class objectdemo {
	/*
object类的概述
    .object 是类层次结构的根(root),每个类都可以将object作为超类,所有类都直接或间接的继承自该类
构造方法
    .public object()
    .回想面对对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法
        因为他们的顶级父类object只有无参构造方法
查看方法的源码
    .eclipse 选中方法,右键 打开声明 或者按下 F3
    .idea 选中方法,按下ctrl+b
为什么我student s =new student();System.out.println(s);后,控制台的返回值是object.student@1d8d30f7
    .System.out.println(s) 的底层源码是public void println(Object x)此时这个x就等于s等于new student()
    .valueOf(x)的底层源码就是public static String valueOf(Object obj) 这个obj就等于=x=s=new student()
    .public static String valueOf(Object obj) 方法里面有这么一句话return (obj == null) ? "null" : obj.toString();运用了三元运算符,因为obj不等于null,所以直接执行了表达式三,也就是obj.toString(),
    .toString()的底层源码是public String toString();方法里面有这么一句话return getClass().getName() + "@" + Integer.toHexString(hashCode());,也就是你的在控制台出现的值了
解决办法
    .在student类里面面重写toString的方法
    .eclipse的快捷键是  shift+alt+s
三元运算符
    .expression1 可以是计算为 boolean 值的任何表达式。如果 expression1 是 true ,那么将评估 expression2 。否则,将评估 expression3 。
	 */

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		student s =new student();
		s.setAge(30);
		s.setName("林青霞");
		System.out.println(s);  //object.student@1d8d30f7
		System.out.println(s.toString());//object.student@1d8d30f7   object.student@1d8d30f7   默认在底层调用了object的tostring方法
		
		
//	    public void println(Object x) {       //System.out.println(s)->(object x)中的 x=s
//	        String s = String.valueOf(x);
//	       
//	    }
		
		/* public static String valueOf(Object obj) {   //System.out.println(s)->(object x)中的 x=s->(object obj)obj=x=s=new student()
		        return (obj == null) ? "null" : obj.toString();
		    }
		    */
		
		/* public String toString() {
		        return getClass().getName() + "@" + Integer.toHexString(hashCode());
		    }
		*/

	}

}

student类

package object;

public class student extends Object {
	private String name;
	private int age;
	/**
	 * @param name
	 * @param age
	 */
	public student(String name, int age) {
		this.name = name;
		this.age = age;
	}
	/**
	 * 
	 */
	public student() {
		super();
	}
	
	
	/**
	 * @return name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name 要设置的 name
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return age
	 */
	public int getAge() {
		return age;
	}
	/**
	 * @param age 要设置的 age
	 */
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "student [name=" + name + ", age=" + age + "]";
	}
	
	
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月亮睡在窗边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值