system.out.println()打印对象输出的数据类型不一样?

时间:2024-03-30 17:54:22

一、system.out.println()作用

在Java编程中,我们常常用 System.out.println(); 来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?
System就是java.lang里面的一个类
system.out.println()打印对象输出的数据类型不一样?
我们把黄色部分翻译一下就是“系统类包含几个有用的类字段和方法。它不能被实例化。系统类提供的工具包括标准输入、标准输出和异常输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及快速复制数组一部分的实用方法。”

system.out.println()打印对象输出的数据类型不一样?Crtrl+鼠标点击“out”进入查看“out”在System类里面充当的角色
system.out.println()打印对象输出的数据类型不一样?
我们发现,“out”是System类里面的一个静态数据成员,而这个成员是java.io.PrintStream类的引用。如下图,被关键字static修饰的成员可以直接通过"类名.成员名"来引用,而无需创建类的实例。所以System.out是调用了System类的静态数据成员out。 而println()又是java.io.PrintStream类里的一个方法。
println()在

二、system.out.println()输出对象的原理

我们知道,其实对象就是引用,那么我理解如果要把对象输出,结果肯定是一串内存地址,就像这样的。这里定义了一个字节数组对象,输出这个字节数组对象,就是输出了这个对象的引用地址
system.out.println()打印对象输出的数据类型不一样?
那么为什么有些System.out.println()输出的不是内存地址内,比如输出字符串,看下面的例子,输出的是“hello”字符串,为什么不是内存地址呢?
system.out.println()打印对象输出的数据类型不一样?
原因是没有重写对象的toString()方法,println方法中:
system.out.println()打印对象输出的数据类型不一样?
调用了String.valueOf(x)方法,而valueOf()方法中:
system.out.println()打印对象输出的数据类型不一样?
调用了相应对象的toString()方法,如果你没有重写对象toString的方法,默认使用父类object的toString的方法:
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}

所以我们在上面字符串的例子上可以看到,输出的是“hello”,而不是内存地址。是因为String类重写了toString方法
system.out.println()打印对象输出的数据类型不一样?

三、举一反三,new File对象,进行输出是什么?

我们首先去看File类有没有重写toString方法,查看File.class得知,也重写了
system.out.println()打印对象输出的数据类型不一样?
所以我们判断输出的是文件路径,通过下面的例子我们来验证一下
system.out.println()打印对象输出的数据类型不一样?
好了,这就是我们今天讲解的关于system.out.println()的一些理解!

文中如果有任何问题的,包括实践的代码,可以关注公众号CoderTeam发消息随时联系我,也欢迎大家一起探讨研究技术问题!