1. 程式人生 > >我們能從java的HelloWorld學到什麼?

我們能從java的HelloWorld學到什麼?

這是每個Java程式設計師都知道的。雖然簡單,但是從一個簡單的問題可以引入更深的思考。在這篇文章中,我們將討論這個簡單的程式。如果能更多的幫到你,請留下寶貴的意見。

HelloWorld.java

  1. publicclassHelloWorld{
  2. /**
  3. * @param args
  4. */
  5. publicstaticvoid main(String[] args){
  6. // TODO Auto-generated method stub
  7. System.out.println("Hello World");
  8. }
  9. }

 1、為什麼一切都開始於一個類?

Java程式是由類組成,一個類包含方法和屬性。這是由於它的面向物件的特徵:一切皆物件,每個物件都是一個類的例項。面向物件程式設計有很多優勢,比如更好的模組化,擴充套件性強等

2、為什麼總有一個“main”方法?

“main”方法是程式的入口,它是靜態的。 “static”是指該方法是類的一部分,而不是物件的一部分。

這是為什麼?我們為什麼不把一個非靜態方法作為程式的入口?

如果方法不是靜態的,那麼需要建立一個物件後才能使用方法。因為必須用物件去呼叫方法。對於程式的入口,這是不現實的。所以,程式的入口方法是靜態的。

引數“String[] args”表示一個字串陣列可以被傳入到該程式,用來初始化程式。

3、HelloWorld的位元組碼

執行這個程式,Java檔案首先編譯為java位元組碼儲存在.class檔案裡。

位元組碼是什麼樣子的呢?

首先,位元組碼本身是無法讀取。如果我們用一個十六進位制編輯器開啟,它看起來像下面這樣:

我們能看到很多操作碼(比如  CA、4C 等)在位元組碼上,它們每個都有一個相應的助記碼(比如,aload_0 在下面的例子中)。操作碼是不可讀的,但我們可以用javap命令檢視.class檔案的助記符形式。

“javap -C”打印出每個方法的反彙編程式碼。反彙編程式碼的意思是包括Java位元組碼的說明。

  1. javap -classpath .-c HelloWorld
  1. Compiledfrom"HelloWorld.java"
  2. publicclassHelloWorldextends
    java.lang.Object{
  3. publicHelloWorld();
  4. Code:
  5. 0: aload_0
  6. 1: invokespecial #1; //Method java/lang/Object."<init>":()V
  7. 4:return
  8. publicstaticvoid main(java.lang.String[]);
  9. Code:
  10. 0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
  11. 3: ldc #3; //String Hello World
  12. 5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
  13. 相關推薦

    【十年磨一劍】我們阿里架構師的身上到什麼?

    前言 做技術的,一定不能放棄技術。在精進技術的同時完善其他方面的能力,十年如一日。不忘初心,方得始終。 正文 本文是看到阿里巴巴系統架構師黃勇的採訪記錄有感而發,如有侵權,請聯絡我。下面就一起來看看阿里架構師的十年架構路。 和大家介紹下我目前所從事的工

    我們java的HelloWorld到什麼?

    這是每個Java程式設計師都知道的。雖然簡單,但是從一個簡單的問題可以引入更深的思考。在這篇文章中,我們將討論這個簡單的程式。如果能更多的幫到你,請留下寶貴的意見。 HelloWorld.java publicclassHelloWorld{/** * @p

    阿里巴巴資深技術專家無相:我們 InteliJ IDEA 中學到什麼?

    開發十年,就只剩下這套架構體系了! >>>   

    B站的代碼泄露事件中,我們到些什麽?

    距離 隔離 並不是 ges oss 流行 聯網 type roc 先聲明一下,本文不聊ISSUE中的七七八八,也不聊代碼是否寫的好,更不聊是不是跟蔡徐坤有關之類的吃瓜內容。僅站在技術人的角度,從這次的代碼泄露事件,聊聊在代碼的安全管理上,通常都需要做哪些事來預防此類事件的發

    那些想做鯰魚的企業,今日頭條身上到什麽?

    今日頭條在之前的一篇文章中曾經提到,今日頭條可能是中國“樹敵”最多的企業,與微博、百度、UC、知乎都產生過或大或小的沖突。最近,今日頭條用實際行動印證了這一的看法,又雙叒把別人告上了法庭,這一次是曾經的盟友搜狗。2月22日,海澱區法院稱答題遊戲“百萬英雄”運營方今日頭條和運城市陽光公司起訴了搜狗,認為搜狗輸入

    視頻直播系統:直播源碼當中我們看到什麽?

    直播軟件開發越來越多的數據表明直播行業發展的曲線,是一種良性又快速的增長。這種增長方式得益於各大主流網絡直播平臺的領頭作用,又得益於視頻直播開發的良性循環。從視頻直播開發當中,能清晰的看到,直播源碼在其中占著絕大的“領地”。而我們由大及小,單單從直播源碼當中,就能看到這個行業發展的路程。視頻直播開發,用長遠的

    90歲的褚時健退休了,我們能夠褚老身上到些什麼?

        出身: 1928年,褚時健出生在雲南一個農村家庭,15歲喪父,輟學、烤酒、種地,和母親撐起了全家生計;青年時求學卻遭遇戰爭,扛過槍打過仗,二十出頭就當了地方小領導。 語錄:經歷過的東西,對你都是有用的。你覺得那時候條件很苦,可誰知道今後會不會更苦。當

    這是我們公司給應屆生學習的Python教程大全!希望到你Python

    1. 簡介 本指南主題是 魔法方法 。 什麼是魔法方法呢?它們在面向物件的Python的處處皆是。它們是一些可以讓你對類新增“魔法”的特殊方法。 它們經常是兩個下劃線包圍來命名的(比如 __init__ , __lt__ )。但是現在沒有很好的文件來解釋它們。 所有的魔法方法都會在Pytho

    設計師產品經理身上到什麼?

    絕佳的產品人員無論他們的職稱是什麼,都有著一樣的共性:極富想象力,對於目標使用者的深思熟慮。 與此同時,針對設計師和產品經理的面試也不盡相同,可能一個針對設計師候選人來說無足輕重的技能和品質對於產品經理候選人來說就至關重要,反之亦然。他們彼此之間可以學習的東西太多太多。很有幸,作為設計人員,我和一些業內頂級

    網頁設計師戈登·拉姆齊到的7件法寶

    週五晚上,我正在看戈登·拉姆齊的《Kichen Knightmares USA》,它讓我突然意識到,作為一名網頁設計師,我們能從這位傑出的廚房大師那裡學到很多東西。 1. 簡單 戈登經常告誡失敗的餐館要簡化他們的選單。這樣可以讓廚房便於管理,而且可以令顧客較方便的點餐。 簡化你的網

    起html呢?

    計算機基礎 基礎 .com 聯網 學習 targe 最好 綜合 腳本   通俗地說,HTML5是一種建網站的技術,但光學HTML5是做不好網站的,你還要會CSS3(層疊樣式表)、Java(一種腳本語言)、JQ(jquery,一種Java框架)等,綜合了這些技術,才能做一個能

    wow!英語語法還這麽

    英語01沒有動詞的句子,要用be動詞06指示代詞this these that those08be動詞的疑問句,be動詞提前,句號改問號13there be的疑問句 與be動詞一樣14there be主語前的修飾語(O)不定冠詞,數量詞,數量形容詞(some\many)形容詞(X)定冠詞、指示代詞、所有格(m

    java筆錄-第0篇

    c++ 什麽是 每天 dir 之間 str 退出 span 跨平臺 從零學java筆錄-第0篇 寫在前面的話: 一直想把自己學習java的過程分享出去,以前只是太懶,最近工作又太忙。好不容易國慶了,整理了自己從零開始學java的筆記。以後無論在忙努力堅持每天至少發一到兩篇。

    帶你ReactNative開發跨平臺App開發(一)

    roi 權限 完整性 2-2 apps tar 我們 利用 ejs 首先自我介紹一下,本人鳥窩,現在就職於xx共享汽車,擔任主程,目前用的技術棧是.net core+angular。 今天我講的是關於ReactNative從零基礎開發,希望可以對入門的新手,起到

    帶你ReactNative開發跨平臺App開發(二)

    lin lob 進行 ava img develop glob pow gist ReactNative跨平臺開發系列教程: 帶你從零學ReactNative開發跨平臺App開發(一) 上一篇教程我們一步步配置了開發RN的必備環境,這篇文章我們依然配置環境,昨天配置

    帶你ReactNative開發跨平臺App開發--揭開實戰內幕(四)

    react src 開始 strong 說了 mage com 原因 gpo 經過前三篇文章,我詳細的說了一下關於基礎環境配置的事情,那麽接下來就真真正正的coding吧,關於環境配置方面的問題,如果不明白,請自己百度科普。 說實戰的話,其實我準備了四個項目,不好選擇

    帶你ReactNative開發跨平臺App開發(十)

    學會 自己 get idt 圖片 平臺開發 targe react htm ReactNative跨平臺開發系列教程: 帶你從零學ReactNative開發跨平臺App開發(一) 帶你從零學ReactNative開發跨平臺App開發(二) 帶你從零學ReactNa

    提示不T_ECC_MEMBER_L插入重復鍵值

    T_ECC_MEMBER_L問題:當新增會員檔案時,提示不能從T_ECC_MEMBER_L插入重復鍵值;解決方法:/*查詢異常檔案資料,並且找出最大的正常id,插入臨時表*/select fpkid,2553587+ROW_NUMBER() over(order by fpkid) xuhao into m

    auto function -> return type 當不{}內推斷類型時

    rgs enqueue span 返回值 template HR future UNC return 示例: 1 template<class F, class... Args> 2 auto ThreadPool::enqueue(F&& f

    IT界的新方向-大數據?讓我來告訴你如何“零”起!

    大數據學習+Java大數據行業目前炒的很是火爆,但是大數據的發展依然並不是很成熟,尤其是對於一些小白。了解系統的學習大數據的方法將更有利於自己更加快速有效的去學習大數據。分享一下零基礎如何學習大數據。 第一、對於初學者尤其是編程小白,Linux、Java的學習是必須的。但這並不代表我們非要研究透這些,我們只要