您好,登錄后才能下訂單哦!
這篇文章主要介紹Java中如何輸出Hello World,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
1、示例如下
C語言
printf("Hello World!");
C++語言
cout << "Hello World!";
Golang語言:
fmt.Print("hello world!")
Java語言:
System.out.print("Hello World!");
Python語言:
print('Hello World!')
下面這個代碼是Java輸出Hello World的代碼,代碼沒有報錯,輸出結(jié)果正確。
我們在輸出這一行打一個斷點(diǎn),并且以debug模式運(yùn)行,不斷點(diǎn)擊下一步。
首先我們可以看到是System類調(diào)用靜態(tài)成員out,并且out是一個PrintStream對象的實(shí)例,調(diào)用這個實(shí)例的println方法,就來到如下頁面。我們可以看到這個方法傳入的是我們的Hello World字符串,并且調(diào)用print方法,再調(diào)用newLine方法。從這里就可以看出print和println方法的區(qū)別。聰明的你應(yīng)該可以猜到,沒錯,newLine方法就是換行。好的,繼續(xù)往下走~
這個時候我們進(jìn)入了print方法。這里也很好理解。你可以想想當(dāng)我們的字符串為null的時候,你會發(fā)現(xiàn)輸出的是一個字符串的null,而在源碼里面正好就是這樣的設(shè)計(jì)。緊接著,將會調(diào)用該類中的write方法。那行,我們繼續(xù)進(jìn)入write方法。
進(jìn)入write方法,我們會發(fā)現(xiàn)這里有一個同步鎖。學(xué)過Java語法的同學(xué)應(yīng)該馬上就反應(yīng)到了,這是防止在多線程的情況下,一個字符串還未處理完,另一個字符串便進(jìn)來這個方法了,這會導(dǎo)致內(nèi)部的數(shù)據(jù)出現(xiàn)矛盾??!接著是執(zhí)行一個ensureOpen方法,按照我的蹩腳英文hh,初步理解這是“確定是否打開”的意思。那我們就進(jìn)去看看到底是確定什么是否打開!
我們發(fā)現(xiàn)這里有一個判斷out實(shí)例是否為null的情況,當(dāng)out為null的時候,拋出一個“流關(guān)閉”的異常。結(jié)合這個提示,加上對代碼的查看,我們發(fā)現(xiàn)這個out實(shí)例正是輸出流對象的實(shí)例。當(dāng)我們要輸出什么內(nèi)容的時候,當(dāng)然要判斷輸出流對象是否為空呀。OK,這里我們沒啥問題。
那我們就要進(jìn)入整個輸出語句最重要的源代碼了:執(zhí)行寫入。
進(jìn)去之后我們發(fā)現(xiàn),同樣是調(diào)用重載的write方法,傳入的參數(shù)為字符串,0以及字符串長度。接著進(jìn)入該方法。
前方高能!?。?/strong>
同步鎖和ensureOpen方法上面已經(jīng)講過不贅述。這里初始化變量b是0,t是0加上字符串的長度。
這個時候的t-b正好就是字符串的長度,那么接著下去,我們會取我們一次可以寫入最大的長度和t-b最小值。
當(dāng)最小值是我們的字符串長度的時候,我們直接獲取字符串的字符數(shù)組,讓初始變量b加上寫入的長度,這個時候我們會發(fā)現(xiàn)循環(huán)條件已經(jīng)不成立,那么將會結(jié)束循環(huán);
當(dāng)最小值是一次可以寫入最大的長度的時候,我們直接寫入最大的長度,這時候初始變量加上寫入長度的時候,循環(huán)條件是成立的,同時我們也有字符串沒有獲取,那么將會進(jìn)入下一次循環(huán),直到b<t不成立時退出。
同時在執(zhí)行循環(huán)體的過程中,仍然需要不斷清楚緩存。
其余的幾個方法和上面的思路比較相似,這里將不一一贅述。
以上是“Java中如何輸出Hello World”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。