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

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

来源:cnblogs.com/blessing2022/p/16622118.html

去年秋招面试我被问及:

你如何理解 System.out.println()?




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

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



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

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


首先分析System源码:

System就是Java自定义的一个类


image.png


这也是 IO 方面的面试题,如果你近期准备面试跳槽,建议在Java面试库小程序在线刷题,几乎覆盖了所有主流技术面试题。


out源码分析


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



image.png

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


image.png


println分析


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


image.png


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


image.png


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


拓展知识点 :

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

image.png


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



image.png

相关文章
|
4月前
|
存储 安全 Java
面试官没想到一个ArrayList,我都能跟他扯半小时
面试官:List集合都知道哪些对象?作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?这篇文章南哥打算专注于List集合,后面四大集合之Map、Queue、Set后续再来填坑,比心心♥。
132 2
面试官没想到一个ArrayList,我都能跟他扯半小时
|
前端开发 Java 测试技术
你肯定需要!软件测试面试题及答案这里面都有,关键不要钱
软件测人在进入岗位前,都要面对各种五花八门的面试问题。所以,不少人都会在面试前,提前做好相关的应试准备,如,面试话术,技能相关的面试真题背诵记录等等。 前者准备起容易,后者却比较费时费力,因为各个企业的面试题都会不一样,而想要提前做好应对准备,大量刷题就少不了,那哪里可以找大量的软件测试面试题及答案呢?
137 0
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
|
存储 缓存 安全
花了好几个晚上整理的JVM知识点,吐血献出(一)(上)
花了好几个晚上整理的JVM知识点,吐血献出(一)
120 0
花了好几个晚上整理的JVM知识点,吐血献出(一)(上)
|
监控 算法 Java
花了好几个晚上整理的JVM知识点,吐血献出(一)(下)
花了好几个晚上整理的JVM知识点,吐血献出(一)(下)
153 0
花了好几个晚上整理的JVM知识点,吐血献出(一)(下)
“= =”和 “equals” 的区别是什么?面试篇(第二天)
本文带大家一起了解“= =”和 “equals” 的区别。
142 0
“= =”和 “equals” 的区别是什么?面试篇(第二天)
昨天去某大厂面试,居然让我做四则运算,还好我够机灵。
面试官:请您说说怎么计算四则运算?比如1 + 2 * ( 3 + 4 ) - 5。 我:先算括号里再算括号外,先乘除后加减,最后等于10。 面试官懵了一下,说:可能我说明白,我想问的是用计算机怎么计算? 我尬尴的笑了笑,马上说到:对于计算机来说,单纯的两个数的加减乘除很容易,但是如果乘除在加减的后面却要先运算,再加上几个括号,就变得更加复杂了。 为了使计算机更容易理解,前人已为我们引入了一种新的四则运算的表示法。
184 0
昨天去某大厂面试,居然让我做四则运算,还好我够机灵。
|
NoSQL Java 程序员
JDK的equals方法都写错了,那到底该怎么写呢?(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day3)
JDK的equals方法都写错了,那到底该怎么写呢?(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day3)
113 0
JDK的equals方法都写错了,那到底该怎么写呢?(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day3)