字節(jié)一面,面試官拿 System.out.println() 考了我半個(gè)小時(shí)?我傻了

來(lái)源:toutiao.com/i6817721442277261835
前言 拓展知識(shí)點(diǎn)
前言
之前春招面試我被問(wèn)及,你如何理解System.out.println() ?
今天我就來(lái)給大家分享一下!

學(xué)了這么久的面向?qū)ο缶幊?,那如何用一行代碼體現(xiàn)呢?

如果你能自己讀懂System.out.println(),就真正了解了Java面向?qū)ο缶幊痰暮x
面向?qū)ο缶幊碳磩?chuàng)建了對(duì)象,所有的事情讓對(duì)象幫親力親為(即對(duì)象調(diào)用方法)
System.out.println("hello?world");
hello?world
Process?finished?with?exit?code?0
首先分析System源碼
System就是Java自定義的一個(gè)類(lèi)

out源碼分析
①out是System里面的一個(gè)靜態(tài)數(shù)據(jù)成員,而且這個(gè)成員是java.io.PrintStream類(lèi)的引用

②out已經(jīng)存在了且用Static修飾了,所以可以直接使用類(lèi)名+屬性名的方式調(diào)用,也就是System.out。

println分析
①println()就是java.io.PrintStream類(lèi)里的一個(gè)方法,它的作用是向控制臺(tái)輸出信息。

②里面有很多重載的方法,這樣就保證了任意的東西都可以輸出

小結(jié)下來(lái)就是:類(lèi)調(diào)用對(duì)象,對(duì)象調(diào)用方法
拓展知識(shí)點(diǎn)
1、System.out.print();與System.out.println(); 的區(qū)別

2、字符數(shù)組輸出面試案例
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會(huì)自動(dòng)調(diào)用輸入?yún)?shù)的toString方法,輸出內(nèi)容時(shí)toString方法的返回值。
println的參數(shù)分基本類(lèi)型,一個(gè)是String 另一個(gè)是Object類(lèi)型。
System.out.println(ch) println()自動(dòng)調(diào)用println(char[] ) 也就是Object類(lèi)型 所以輸出xy
然而System.out.println(“ch=”+ch) "+"是字符串連接符,自動(dòng)調(diào)用println(String ),也就是String類(lèi)型 輸出的是xxx@xxxx的形式。
詳細(xì)理解 逐步進(jìn)入之后,發(fā)現(xiàn)調(diào)用toString() ,我們可以進(jìn)行重寫(xiě)。

---END--- 重磅!碼農(nóng)突圍-技術(shù)交流群已成立 掃碼可添加碼農(nóng)突圍助手,可申請(qǐng)加入碼農(nóng)突圍大群和細(xì)分方向群,細(xì)分方向已涵蓋:Java、Python、機(jī)器學(xué)習(xí)、大數(shù)據(jù)、人工智能等群。 一定要備注:開(kāi)發(fā)方向+地點(diǎn)+學(xué)校/公司+昵稱(chēng)(如Java開(kāi)發(fā)+上海+拼夕夕+猴子),根據(jù)格式備注,可更快被通過(guò)且邀請(qǐng)進(jìn)群 ▲長(zhǎng)按加群 推薦閱讀
? ?那個(gè)從深圳流水線工人去Google上班程序媛,最近失業(yè)了! ???這款網(wǎng)絡(luò)排查工具,堪稱(chēng)神器! ???面試官扎心一問(wèn):數(shù)據(jù)量很大,分頁(yè)查詢很慢,有什么優(yōu)化方案? ???太牛了!華中科技大學(xué)學(xué)霸,201萬(wàn)頂薪簽約華為,成今年頂薪加入第一人! 網(wǎng)友:我酸了,一輩子的都到達(dá)不了 ??Java 里的 for (;;) 與 while (true),哪個(gè)更快? ?? 三年,我從語(yǔ)文老師到支付寶技術(shù)前端的蛻變 最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?BAT?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。 如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝 明天見(jiàn)(??ω??)??

