【答疑解惑】Java中System.out.print函数

时间:2022-05-04
本文章向大家介绍【答疑解惑】Java中System.out.print函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

语音版:

在Java中经常会用到System.out.print函数,大家经常用它来打印日志,是最基本的调试程序方法。前几天遇到群里有一小伙伴问为什么我打印一个char数组是直接输出的一个字符串,可是打印其他的数组输出的结果是一个对象,关于这个问题我给大家讲一下。

首先对于这种不明白Java API方法的问题我的建议是直接查看Java源码,给大家推荐一个查看源码特别方便的工具-Source Insight,网上有破解版大家可以自行搜索下载,然后新建工程导入Java源码,Java源码在jdk安装目录,例如我的是:C:Program FilesJavajdk1.7.0_65src.zip,是一个压缩包,解压缩就行了。

然后搜索System.java源码了,找到out对象,源码如下:

/**
* Default output stream.
*/
public static final PrintStream out;

out对象其实是一个PrintStream的实例,然后就查看PrintStream.java源码,找到print函数,大家看源码就会发现在PrintStream类中print函数有好几个,都是print的重载函数,重载在上一周的答疑解惑讲的很明白,就是函数的参数列表不同。大致看了一下print的重载函数,参数基本上分为三类:基本数据类型、char数组和Object。

找到打印char数组的那个重载方法看一下,代码如下:

/**
* Prints the string representation of the character array {@code chars}.
*/
public void print(char[] chars) {
    print(new String(chars, 0, chars.length));
}

看完源码大家应该明白了,打印char数组的时候实际上是用char数组新建了一个String对象,然后把String对象输出,所以打印char数组看到的是一个char数组元素构成的字符串。

今天的答疑解惑主要给大家说的是两件事:

  • System.out.print函数输出char数组为什么是字符串;
  • 遇到类似Java API方法不明白的问题怎么查看Java源码;