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

语音版:

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

首先对于这种不明白Java API方法的问题我的建议是直接查看Java源码,给大家推荐一个查看源码特别方便的工具-Source Insight,网上有破解版大家可以自行搜索下载,然后新建工程导入Java源码,Java源码在jdk安装目录,例如我的是:C:\Program Files\Java\jdk1.7.0_65\src.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源码;

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot

MongoDB基本数据类型

623
来自专栏PHP实战技术

你应该这个姿势学习PHP(1)

  应用场景:能防止sql的注入(当然并不完全是可以,我们可以使用pdo进行预处理然后方式sql的注入,安全不能只靠一种方式防止事情的发生)

48116
来自专栏机器学习从入门到成神

2015百度校招笔试真题以及解析(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

1022
来自专栏郑科的专栏

PHP7 新特性简介(一)

PHP7是PHP编程语言全新的一个版本,在性能方面获得了极大的提升。官方的文档显示,PHP7可以达到PHP5.x版本两倍的性能。同时还提供了很多其他语言流行的语...

4530
来自专栏后台全栈之路

图文并茂解释内存池原理

在 C 语言的动态申请内存技术中,相比起 alloc/free 系统调用,内存池(memory pool)是与现在系统中请求一大片连续的内存空间,然后在运行时根...

2474
来自专栏帅小子的日常

Javac的实现过程

1032
来自专栏帅小子的日常

Javac的实现过程

3045
来自专栏别先生

python的学习和使用

710
来自专栏北京马哥教育

Python 基础语法

Python语言与Perl,C和Java等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习Python的基础语法,让你快速学会Python编程...

3016
来自专栏我有一个梦想

CI学习 CCNET Config 第一天

CCNet的整体结构就是一个Xml文档,根元素就是cruisecontrol,具体的代码块如下所示: <cruisecontrol xmlns:cb="urn...

1946

扫码关注云+社区