查看原文
其他

字节一面,面试官拿System.out.println()考了我半个小时?我傻了

作者:阿博的Java栈

链接:http://suo.im/5wTHK0


前言


之前春招面试我被问及,你如何理解System.out.println() ?
今天我就来给大家分享一下!

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

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

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

System.out.println("hello world");
hello world

Process finished with exit code 0

首先分析System源码

System就是Java自定义的一个类


out源码分析

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


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


println分析

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


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


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

拓展知识点 :

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

  • 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() ,我们可以进行重写。

最后给大家送下福利,大家可以关注Java核心技术公众号,在后台回复 “福利”可以获取一份我整理的最新Java面试题资料。

(END)

最近好文分享

Apache BeanUtils VS Spring BeanUtils

有比 ReadWriteLock更快的锁?

JVM 史上最最最完整知识总结!

是用 Spring 的还是 Apache 的好?

什么时候会走StringBuilder?

CTO 写的代码,也是没谁了!

Java如何实现二维码?【附源码】

Java 应用性能调优 so easy。。。

更多请扫码关注 Java核心技术


一个分享Java核心技术干货的公众号


欢迎大家在看、转发
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存