秋招Java-面試官就System.out.println()考了我半個小時?

分享獲取新知,共同成長,一起進步

去年秋招面試我被問及,你如何理解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.System.out.println()不能直接寫在類中

因爲在 Class A{
       //成員變量
       //構造方法
       //普通方法
       //內部類
}

如果硬是想使用System.out.println(“hello world”),可以加上一個大括號,讓他成爲普通塊,所謂的普通塊就是將普通方法去掉前面的聲明,本身也是屬於普通方法。

在這裏插入圖片描述
Java在定義一個類的時候裏面只能放方法和屬性,這是規定。

System.out.println()是在調用一個叫println的函數,這裏是函數的調用而不是在類裏面定義一個函數。


  • 3.輸出面試案例
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面試題總結


The best investment is in yourself
在這裏插入圖片描述

2020.04.18 記錄辰兮的第57篇博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章