头铁面试官:一个小小的 System.out.println 硬是考了我半个小时,被问懵了。。...

2024-02-14 00:59

本文主要是介绍头铁面试官:一个小小的 System.out.println 硬是考了我半个小时,被问懵了。。...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

每天 14:00 更新文章,每天掉亿点点头发...

源码精品专栏

 
  • 原创 | Java 2021 超神之路,很肝~

  • 中文详细注释的开源项目

  • RPC 框架 Dubbo 源码解析

  • 网络应用框架 Netty 源码解析

  • 消息中间件 RocketMQ 源码解析

  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

  • 作业调度中间件 Elastic-Job 源码解析

  • 分布式事务中间件 TCC-Transaction 源码解析

  • Eureka 和 Hystrix 源码解析

  • Java 并发源码

来源:toutiao.com/

i6817721442277261835

  • 前言

  • 拓展知识点


前言

之前春招面试我被问及,你如何理解System.out.println() ?

今天我就来给大家分享一下!

5895f1e9fd412b68684e30975f6c6c5c.jpeg

学了这么久的面向对象编程,那如何用一行代码体现呢?

df5e30a770f40cabc573f1d2c03ef1e7.jpeg

如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义

面向对象编程即创建了对象,所有的事情让对象帮亲力亲为(即对象调用方法)

System.out.println("hello world");
hello worldProcess finished with exit code 0

首先分析System源码

System就是Java自定义的一个类

f50cb2ef8b92318e97ae3a0147491cd5.jpeg

out源码分析

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

9dc8d982b4716581b3194d65aa7696e0.jpeg

②out已经存在了且用Static修饰了,所以可以直接使用类名+属性名 的方式调用,也就是System.out。

46aafe2f135946c4e30e5cedd2f2c34d.jpeg

println分析

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

b8bfe71bdecb1689ddf63424216b4c7d.jpeg

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

c42f1d8d04a58909f3c52ec7bf589f35.jpeg

小结下来就是:类调用对象,对象调用方法

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

拓展知识点

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

fec15a29009bd863c034747c4c25362d.jpeg

2、字符数组输出面试案例

public class Demo {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);}
}
xy
ch1=[C@74a14482

这是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的形式。

详细理解 逐步进入之后,发现调用toString() ,我们可以进行重写。

c0d206c8bc6da86035fbe2194ae456db.jpeg

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

614dc6bce06687ea8383f0024e0cd06a.png

已在知识星球更新源码解析如下:

3dc6da1563fa193fef3eeea22513345b.jpeg

180fc2b2f210b9b84219e70fb17d73db.jpeg

f385a2a2108ded001b5eba4d905ece4d.jpeg

7365659870256d1bbedc70e8cf77c1c4.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 6W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

这篇关于头铁面试官:一个小小的 System.out.println 硬是考了我半个小时,被问懵了。。...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707100

相关文章

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

Partical System

创建"粒子系统物体"(点击菜单GameObject -> Create Other -> Particle System) 添加"粒子系统组件"(点击Component -> Effects  ->Particle System) 粒子系统检视面板  点击粒子系统检视面板的右上角的"+"来增加新的模块。(Show All Modules:显示全部) 初始化模块: •

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

System.getProperties().

Java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specification.vendor

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

android6/7 system打包脚本

1.android5打包system就是网站上常见的制作ROM必备的解包打包system脚本 指令如下:mkuserimg.sh -s out/target/product/$TARGET_PRODUCT/system out/target/product/$TARGET_PRODUCT/obj/PACKAGING/systemimage_intermediates/system.img

android打包解包boot.img,system.img

原帖地址:http://www.52pojie.cn/thread-488025-1-1.html 转载Mark一下,日后研究 最近工作需要对boot.img,system.img进行破解。顺便将心得分享一下。 我的工作环境是在linux下的。所以工具都是针对linux的。 boot.img破解相关工具: 1、split_boot    perl脚本 2、boot_i

MTK Android P/Q system/vendor/super快速打包

一、Android 新版本默认开启了动态分区,把system vendor  product等分区打包成一个super分区。这对于我们使用替换分区的方法来排查问题不是很方便,直接替换一个super也不知道到底是哪个部分导致的。所以我们需要自己制作super.img来缩小范围。下面讲讲如何快速生成system、vendor、super,以及vbmeta(校验image,不匹配可能会导致不开机) 二

Linux函数fcntl/system学习

本文针对项目中用到的几个函数进行详细分析,并尽可能的添加示例进行验证学习。比如fcntl/ioctl函数、system/exec函数、popen/pclose函数、mmap函数等。 重点参考了《UNP》和《Linux程序设计》第四版。 一、fcntl函数 fcntl函数可以改变或者查看已打开文件的性质。该函数的定义如下: #include <fcntl.h> int fcntl(