java控制台输出print和println详解

在使用java编程的过程中,控制台输出用得不少,今天我想梳理一下,print、println、printf三者的区别。

一、print

通过System.out.print方法调用,print方法的参数有很多种:boolean、char、char[]、String、int、float、double、long等。

print的输出末尾不换行。

1、print(boolean b)

打印boolean类型时,输出只有true和false两种。我们查看print(boolean b)的源代码,可以看到:

当b为true时输出true,为false输出false。这很直观,没什么可说的。

2、print(char c)

打印单个字符,如果是具有特殊含义的转义字符,则显示出该转义字符的效果。看看实例就知道了:

输出为:前面空了一行,这是换行的效果,然后b和d之间隔了一个Tab。

3、print(char[] buf)

这个方法即把buf数组里的字符一个个打印出来。

打印出来的结果与上述是一样的:

4、print(String s)

打印字符串,需要注意的是,如果s为null,输出null,而不是什么都不输出。

输出结果为:,注意,开头已经说过,print输出的行尾不换行。

5、print int float double long

这四个表示的都是数字类型,java输出的时候,会把数字转成10进制数输出。我们看看java的源代码:

可以看到,java调用了String.valueOf(数字)方法,把数字转成了字符串,然后输出。我们去看看valueOf这个方法的源代码:

valueOf方法将传进来的数字转成了10进制数,然后再转成了字符串。其它三个类型(long、float、double)也一样,都转成了10进制数。

综合起来的效果就是:把数字转换成10进制数输出。

实际测试一下:

输出全部转化为10进制:

二、println

println与print几乎一样,不同的地方有两点。

1、println行尾会换行

我们看看java的源代码:

println(boolean x)调用了print(boolean x),然后调用newLine()方法,这个方法会在print方法输出结束后,另起一行。

其它几个println方法也都是一样,调用对应的print方法,然后换行。

println的使用要比print方便,不需要自己再加一句print(‘\n‘)来换行。

2、println允许参数为空

这种情况下会直接换行,我们看看java源代码:

而print方法不允许参数为空,否则编译报错。

关于print和println的知识我就分享到这里,欢迎批评指正!

参考资料:java源代码

时间: 2024-08-04 23:33:22

java控制台输出print和println详解的相关文章

Java调用SMSLib发送短信详解

项目中需要用到发送短信功能,之前没做过这方面,找人咨询了一下,也网上查了查,发现并不是很复杂.目前项目已经完成了,做个记录以备后用.程序中发送短信主要有4种方法: 1.向当地的运营商申请网关,不需要额外的设备,利用对方提供的 API调用程序发送短信,适用于大型的通信公司.稳定,速度快,适合短信量特别大的需求,需要连接到运营商的网络中,不适合内网项目. 2.短信猫发送短信,借助像 GSM MODEM之类的设备(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人.

Java学习-007-Log4J 日志记录配置文件详解及实例源代码

此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8 有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml.properties)中有详细的介绍,敬请参阅!

Java并发编程之---Lock框架详解

Java 并发开发:Lock 框架详解 摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等.Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题.本文以synchronized与Lock的对比为切入点,对Java中的Lock框架的枝干部分进行了详细介绍,最后给出了锁的一些相关概念. 一

Java NIO中的Glob模式详解

Java NIO中的Glob模式详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.什么是Glob? 在编程设计中,Glob是一种模式,它使用通配符来指定文件名.例如:.java就是一个简单的Glob,它指定了所有扩展名为"java"的文件.Glob模式中广泛使用了两个通配符""和"?".其中星号表示"任意的字符或字符组成字符串",而问号则表示"任意单个字符&quo

Java性能分析之线程栈详解(下)

Java性能分析之线程栈详解(下) 转载自:微信公众号"测试那点事儿" 结合jstack结果对线程状态详解 上篇文章详细介绍了线程栈的作用.状态.任何查看理解,本篇文章结合jstack工具来查看线程状态,并列出重点关注目标.Jstack是常用的排查工具,它能输出在某一个时间,Java进程中所有线程的状态,很多时候这些状态信息能给我们的排查工作带来有用的线索. Jstack的输出中,Java线程状态主要是以下几种: 1.BLOCKED 线程在等待monitor锁(synchronized

JAVA定时任务调度之Timer入门详解(二)

在上篇的JAVA定时任务调度之Timer入门详解(一)文章中,主要介绍了下Timer,接下来我们一起来看看Timer的一些常用方法. 1.schedule()的4种用法. 第一种:schedule(TimerTask task, Date time); task:安排的任务,time:具体执行时间.这个函数表达的意义是:在时间等于或超过time的时候执行且执行一次task.测试内容如下 MyTimerTask.java的代码跟第一篇一样,MyTimer.java的部分代码截图如下: 运行后,控制

java提高篇(九)-----详解匿名内部类

摘自http://blog.csdn.net/chenssy/article/details/13170015 java提高篇(九)-----详解匿名内部类 在Java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式

Java魔法堂:String.format详解

Java魔法堂:String.format详解   目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六.对浮点数进行格式化     七.对日期时间进行格式化     八.其他转换符  九.总结   参考 一.前言 String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "John&q

Java魔法堂:String.format详解 (转载)

Java魔法堂:String.format详解   目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六.对浮点数进行格式化 七.对日期时间进行格式化 八.其他转换符   九.总结   参考 一.前言 String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "John"); ,下面将笔记整理并记录下来. 二.重载方法 /