你真的懂System.out.println()吗?
简介
众所周知,Java语言是面向对象的,那如果让你用一行代码体现出来呢?
如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义。
面向对象编程即创建了对象,然后对象调用方法。
System.out.println("hello world");
hello world
分析
1、System源码分析,System是java.lang包的一个类

2、out源码分析
①out是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用
②out已经存在了且用Static修饰了,所以可以直接使用类名+属性名的方式调用,也就是System.out。

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

②里面有很多重载的方法,这样就保证了任意的东西都可以输出

总结就是,类调用对象,对象调用方法
拓展
1、System.out.print();与System.out.println(); 的区别
public class Test {
public static void main(String[] args) {
// 不换行
System.out.print("a");
System.out.print("b");
// 换行
System.out.println("c");
System.out.println("d");
}
}

2、字符数组输出
public class Test {
public static void main(String[] args) {
char[] ch = new char[]{'x', 'y'};
System.out.println(ch);
char[] ch1 = new char[]{'x', 'y'};
System.out.println("ch1=" + ch1);
}
}

这是println()方法的重载,java打印输出System.out.println()会自动调用输入参数的toString()方法,输出内容时toString()方法的返回值。
println的参数分基本类型,一个是String,另一个是Object类型。
System.out.println(ch) println()自动调用println(char[] ) 也就是Object类型 所以输出xy
而System.out.println(“ch=”+ch) "+"是字符串连接符,自动调用println(String),也就是String类型 输出的是xxx@xxxx的形式。
本文部分参考链接:今日头条【阿博的Java栈】https://www.toutiao.com/i6817721442277261835
你真的懂System.out.println()吗?的更多相关文章
- 灵魂拷问:你真的理解System.out.println()执行原理吗?
原创/朱季谦 灵魂拷问,这位独秀同学,你会这道题吗? 请说说,"System.out.println()"原理...... 这应该是刚开始学习Java时用到最多一段代码,迄今为止 ...
- 你真的懂Redis的5种基本数据结构吗?
摘要: 你真的懂Redis的5种基本数据结构吗?这些知识点或许你还需要看看. 本文分享自华为云社区<你真的懂Redis的5种基本数据结构吗?这些知识点或许你还需要看看>,作者:李子捌. 一 ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- 盘一盘 System.out.println()
System.out.println("Hello World")是大部分程序员入门的第一行代码,也可以说是程序员们最熟悉的一行代码.大家真的深入研究过System.out.pri ...
- 面试这么撩准拿offer,HashMap深度学习,扰动函数、负载因子、扩容拆分,原理和实践验证,让懂了就是真的懂!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 得益于Doug Lea老爷子的操刀,让HashMap成为使用和面试最频繁的API,没 ...
- 你真的懂 i++ 和 ++i 吗?
对于 ++i 和 i++,许多人可能都知道,不就是先加1再取值,和先取值再加1嘛.然而,真的是这样吗?请先看以下4道题,能全部答对可以忽略这篇文章. 题目 // 示例1 int i = 1; i = ...
- Java基础-重写System.out.println方法
PrintStream myStream = new PrintStream(System.out) { @Override public void println(String x) { super ...
- System.out.println与System.err.println的区别(输出顺序!!!)
System.out.println与System.err.println的区别(输出顺序!!!) 分类:java (208) (0) System.out.println与System.err.p ...
随机推荐
- [Tkey] OSU!
更新的题解可看 此处 你说得对但是 恐怖日本病毒会自动向你的电脑中下载 OSU! 题意简述 一个 01 串,每个位置有 \(p_{i}\) 的概率为 \(1\),连续的 \(x\) 个 \(1\) 贡 ...
- 通过一个题目三种变式讲清楚go接口类型断言
[第一种]一种类型实现多个接口,各个接口变量调用各自的方法 type Work struct { i int } func (w Work) ShowA() int { return w.i + 10 ...
- Java实用小工具系列2---使用StopWatch统计多个任务耗时分布
在Java中经常需要统计程序的使用时间,如果只是一个时间段统计比较好处理,可以直接使用System.currentTimeMillis().但如果一个程序中包含多个步骤,需要统计每个步骤耗时,并且需要 ...
- axios 常见状态码
'100': 'Continue', '101': 'SwitchingProtocols', '102': 'Processing', '103': 'EarlyHints', '200': 'Ok ...
- 还在使用昂贵的虚拟机?来试试 Devbox,便宜 6 倍!
这篇小短文来介绍一下用虚拟机的场景是怎么被 Devbox 全方位碾压的. Devbox 唯一弱点是公网出口的地方不分配独立的 IP 地址,但是这对我们绝大多数场景是没有影响的,通过域名和端口访问我们的 ...
- kaggle数据集某咖啡店的营销数据分析
因为还处于数据分析的学习阶段(野生Python学者),所以在kaggle这个网站找了两个数据集来给自己练练手. 准备工作 import pandas as pd import os import ma ...
- Protues中51单片机按键无法复位(已解决)
前言 昨晚用 Protues 搭建了 51 的最小系统电路,在实物中好用的复位电路,到仿真里不能正常复位了. 51 单片机是高电平复位,所以在运行时 RST 引脚应该是低电平,但在仿真中 RST 引脚 ...
- 挑战Java面试题复习第1天,坚持就是胜利
面向对象和面向过程的区别面向过程: 步骤分析:将问题分解为一系列步骤.函数实现:用函数逐步实现这些步骤.调用执行:在需要时调用这些函数.高性能:适合对性能要求高的场合,如单片机和嵌入式开发.面向对象: ...
- 手写js new,new的过程到底发生了什么
在JavaScript中,new关键字的应用可以说是再平常不过了,最基础的有new Array().new Set(),再而就是new一个自己创建的构造函数,也就是创建一个该构造函数的示例.如:var ...
- 一文彻底熟练掌握并使用Java的NIO操作
一.基本概念 Java NIO 是 Java 1.4 引入的,用于处理高速.高并发的 I/O 操作.与传统的阻塞 I/O 不同,NIO 支持非阻塞 I/O 和选择器,可以更高效地管理多个通道. 二.核 ...