首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >学了这么久的Java,你确定真正知道System.out.println();吗?

学了这么久的Java,你确定真正知道System.out.println();吗?

作者头像
百思不得小赵
发布于 2022-12-01 04:49:01
发布于 2022-12-01 04:49:01
77101
代码可运行
举报
文章被收录于专栏:小赵Java总结小赵Java总结
运行总次数:1
代码可运行

各位麻油们,大家学了这么久Java了,确定真的掌握了System.out.println(); 吗?确定了解了Java面向对象编程的含义了吗?今天,我就深层刨析一下这串源代码!

如果能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义,面向对象编程即创建了对象,所有的事情让对象帮亲力亲为(即对象调用方法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 System.out.println("hello world");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello world

Process finished with exit code 0

话不多说,首先对System源码进行分析:

System就是java中的一个类

out源码分析:

1.out是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用

2.out已经存在了并且用static修饰了,所以可以直接使用类名+属性名的方式调用,也就是System.out。 3.out的真实类型是一个静态的PrintStream对象,静态的所以不需要创建对象。

println源码分析:

1.println()就是java.io.PrintStream类里的一个方法,它的作用是向控制台输出信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void println(String x) {
        if (getClass() == PrintStream.class) {
            writeln(String.valueOf(x));
        } else {
            synchronized (this) {
                print(x);
                newLine();
            }
        }
    }

2.之所以可以输出任何东西,是因为里面有方法重载!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void println(int x) {
        if (getClass() == PrintStream.class) {
            writeln(String.valueOf(x));
        } else {
            synchronized (this) {
                print(x);
                newLine();
            }
        }
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void println(long x) {
        if (getClass() == PrintStream.class) {
            writeln(String.valueOf(x));
        } else {
            synchronized (this) {
                print(x);
                newLine();
            }
        }
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void println(char[] x) {
        if (getClass() == PrintStream.class) {
            writeln(x);
        } else {
            synchronized (this) {
                print(x);
                newLine();
            }
        }
    }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void println(String x) {
        if (getClass() == PrintStream.class) {
            writeln(String.valueOf(x));
        } else {
            synchronized (this) {
                print(x);
                newLine();
            }
        }
    }

等等等等。。。。。。。。这里就不一一列举了!!!

总结 System.out.println()就是:类调用对象,对象调用方法!!!

开拓视野:

System.out.print();与System.out.println(); 的区别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Text {
    public static void main(String[] args) {
        System.out.print('a');
        System.out.print('b');

        System.out.println('c');
        System.out.println('d');
    }
}

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abc
d

System.out.print();输出结果不能换行,System.out.println();输出结果进行换行。

今天的分享就到这里啦!!~感谢大家的观看

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
字节一面,面试官拿 System.out.println() 考了我半个小时?
如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义
开发者技术前线
2020/11/24
5600
字节一面,面试官拿 System.out.println() 考了我半个小时?
你真的懂 System.out.println() 吗?
如果你能自己读懂 System.out.println(),就真正了解了Java 面向对象编程的含义。
一个正经的程序员
2023/12/14
2940
你真的懂 System.out.println() 吗?
面试官拿System.out.println()考了我半个小时?我傻了
如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义
Java小咖秀
2020/07/21
4210
面试官拿System.out.println()考了我半个小时?我傻了
灵魂拷问:你真的理解System.out.println()打印原理吗?
这应该是刚开始学习Java时用到最多一段代码,迄今为止,与它算是老朋友了。既然是老朋友,就应该多去深入了解下其“内心”深处的“真正想法”。
朱季谦
2020/10/28
2.7K0
灵魂拷问:你真的理解System.out.println()打印原理吗?
Java中未被初始化的字符串打印出“null”?
String字符串是我们日常生活中常用的一个类,那你知道一个未初始化的String打印出来是什么吗?
一杯茶Ja
2024/09/29
3970
system.out.println()里面_println的意思
第一次见到该表达式的时候,我还不知道什么是方法引用,当时真是一脸蒙圈,然后问了好多同事,给我的解释也是五花八门,但我还是感觉莫名其妙,有段时间想着就当一个特例记住就好了,不要再去深究了!!!但是我这个人,在这种时候就是很难说服自己,于是有了上篇文章,再回过头来看这个问题,其实就变得非常简单了。
全栈程序员站长
2022/11/11
3920
system.out.println()里面_println的意思
Java中未被初始化的字符串打印出“null”?
String字符串是我们日常生活中常用的一个类,那你知道一个未初始化的String打印出来是什么吗?
程序猿川子
2024/08/12
3190
Java中未被初始化的字符串打印出“null”?
java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Fisherman渔夫
2019/07/31
1.8K0
java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
我敢打赌绝大多数程序员没有这么深入研究过 System.out.println()!
System.out.println 是一个 Java 语句,一般情况下是将传递的参数,打印到控制台。
良月柒
2019/07/16
8100
我敢打赌绝大多数程序员没有这么深入研究过 System.out.println()!
你了解System.out.println()的真正含义吗?
在Java编程中,我们常常用 System.out.println(); 来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?
全栈程序员站长
2022/11/17
5090
你了解System.out.println()的真正含义吗?
大数据必学Java基础(七十二):System类对IO流的支持
​System类对IO流的支持一、System的属性System.in : “标准”输入流 -- 默认情况下从键盘输入System.out :“标准”输出流 -- 默认情况下,输出到控制台二、System.in“标准”输入流 -- 默认情况下从键盘输入public class Test01 { //这是一个main方法,是程序的入口: public static void main(String[] args) throws IOException { //得到的是
Lansonli
2022/10/11
4420
大数据必学Java基础(七十二):System类对IO流的支持
Java IO流之PrintWriter分析「建议收藏」
PrintWriter继承于Writer抽象类,属于字符流的一种,方法包含了写入单个字符和字符数组的方法.但不包含原始字节写入的方法.在设置自动刷新的时候,不像PrintStream流中遇到换行符就会刷新,PrintWriter只有调用了printf,println,format三类方法其中一种才会自动刷新.PrintWriter流永远不会抛出异常,因为当抛出异常的时候,流内部会将异常捕获(try{}catch(){}),然后将内部标识设置成true,表示有异常抛出,调用checkError()方法可获取此标识.
全栈程序员站长
2022/09/22
5910
Java IO流之PrintWriter分析「建议收藏」
Java 学习笔记(7)——接口与多态
上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是Java中的多态以及利用多态形成的接口
Masimaro
2019/06/02
8190
Java - IO 内存流和打印流
如果使用OutputStream,输出String字符串数据,就需要将String变为字节数组输出getBytes(),同理boolean也需要变为Byte数据输出……
Mirror王宇阳
2020/11/12
6910
慎用System.out.println!!!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
林老师带你学编程
2019/10/24
3K0
需避免的7个Java编码错误
深入探讨Java项目中最常见的错误,这些错误来自涵盖该语言的600多条规则,同时考虑了质量和安全性。
云云众生s
2024/03/28
2010
Java---IO加强(2)
需求:模拟英文聊天程序,要求: (1) 从键盘录入英文字符,每录一行就把它转成大写输出到控制台; (2) 保存聊天记录到字节流文件。
谙忆
2021/01/21
3980
Java---IO加强(2)
初识Java对象
1面向对象编程:当你要实现一个功能的时候,不关心具体步骤,而是找一个已经具备该功能的人来帮我做
一只胡说八道的猴子
2020/09/27
6410
初识Java对象
【Java】缓冲流、转换流、序列化流
昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。
陶然同学
2023/02/27
3870
【Java】缓冲流、转换流、序列化流
HasStatic是什么意思java_java – getstatic在字节码中真正意味着什么?
// Stack is [initializedAsTypeObjectObjectRef]
全栈程序员站长
2022/09/27
1K0
相关推荐
字节一面,面试官拿 System.out.println() 考了我半个小时?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档