從hello world開始談談

看這里(javaAPI)來自開源中國
要學會看文檔啦 我放在這里也是為了以后自己看

學習記錄 歡迎大佬

從簡單的helloworld開始

HelloWorld.java
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}

這篇博文關于helloworld有的東西,就是以下幾個方面

    • 修飾符———public
    • 類是什么——class
    • 為什么main不是靜態的——static main
    • 返回——void
    • 局部變量,命令行參數——args
    • 從源代碼到執行——(.java)
    • 構造方法——只是你看不到而已啦

1:類是什么

人類 特征:兩條腿 行為: 說人話
就是這樣的,java的類也并沒有很難理解啦。把數據域(人類的特征)和方法(人類的行為)封裝在一起,也就成為了類。類和對象不分家,對象你就好比你是人類中的一員,你呢,就是人類的一個具體的實例。

java是一門面向對象的編程語言,除了基本數據類型以外,Java要求每一個數據類型必須都是一個類。
面向對象的編程思想力圖使在計算機語言中對事物的描述與現實世界中該事物的本來面目盡可能地一致,類(class)和對象(object)就是面向對象方法的核心概念。
類是對某一類事物的描述,是抽象的、概念上的定義;對象是實際存在的該類事物的個體,因而也稱實例(Instance)。類和對象就如同概念和實物之間的關系一樣,類就好比是一個模板,而對象就是該模板下的一個實例。
面向對象的主要思想是:將客觀事物看作具有狀態和行為的對象,通過抽象找出同一類對象的共同狀態和行為,構成類。
在Java當中申明類都是由class開頭的。(維基教科書

2: 修飾符

  • public: 公共的,像是大自然的陽光,不同包,不同類,都可以訪問。
  • protected: 被保護的,同類或其子類可以訪問,可以理解為:如果你和我是同一種的,那你可以訪問我的(如果你是它的子類,那你相對于和他同一種is-a)
  • private: 私人的,私有的東西不給別人看,只有同一個class類的可以用
  • 默認的 : 沒有特定指示是以上三種,那就是默認的了,同一個包,同一個類,還有其子類可以訪問。

3:靜態

當你見到static時,你就得明白,這個方法或者這個變量,是靜態的,是屬于全人類的,不是你一個人的,也不是其他人一個人的,就跟c語言的全局變量這個概念差不多啦,然而java語言是沒有全局變量這個概念的,畢竟java有垃圾回收器。
java中的static修飾的東西直接通過類名訪問,非靜態的需要創建一個實例來使用。

創建實例才能訪問的變量或方法叫做實例變量,你有多少個對象,這個東西就有多少個副本,副本之間互不影響。
被static修飾的靜態變量叫做類變量,僅僅屬于類,可以通過實例來調用,不需要一個實例也能用,也不會有副本,當子類繼承了,其父類的靜態的變量或方法也會繼承,不過它仍然不會為了子類創建一個副本,可以理解為繼承了以后,這個靜態變量或方法是父類和子類共同管理的財產,子類的它改變了,父類的它也會跟著改變。#####

靜態的不能訪問實例的,不能以任何方式引用this和super

靜態獨立于實例,那么它必須被實現了

而為什么main函數非得是靜態的呢,你想啊,程序的入口是main函數,如果不是靜態的,那得先創建一個對象去調用這個main方法,不現實,下一個。

4:返回值

返回值可以是基本數據類型,也可以是引用數據類型,也可以像main函數一樣,什么都不返回,就空著回去(void)
介紹數據類型這個我就略了,請參照維基百科數據類型

5:局部變量與命令行參數

局部變量,成員變量,類變量,靜態變量,非靜態變量,實例變量,暈哦,好多名詞

java 中的變量大致分為 成員變量 和 局部變量 兩大類。
成員變量:
在類體里面定義的變量稱為成員變量;
如果該成員變量有 static 關鍵字修飾,則該成員變量稱為 靜態變量 或 類變量;
如果該成員變量沒有 static 關鍵字修飾,則該成員變量被稱為 非靜態變量 或 實例變量。
局部變量:
形參、方法內定義的變量、代碼塊中定義的變量,都屬于局部變量。
類變量 (靜態變量)
1. 可以向前引用
2. 變量屬于類本身
3. 類變量不依賴類的實例,類變量只在初始化時候在棧內存中被分配一次空間,無論類的實例被創建幾次,都不再為類變量分配空間
4. 通過類的任意一個實例來訪問類變量,底層都將將其轉為通過類本身來訪問類變量,它們的效果是一樣的
5. 一旦類變量的值被改變,通過類或類的任意一個實例來訪問類變量,得到的都將是被改變后的值
6. 將在類的初始化之前初始化
實例變量(非靜態變量)
1. 不能向前引用,如果向前引用,則稱為非法向前引用,這是不允許的
2. 變量屬于類的實例對象
3. 隨著類的實例被創建而分配內存空間

以上引用的內容來自fanlychie
而這個helloworld的args 到底是什么呢。他是一個string對象數組,用來保存java應用程序員后所帶的參數,如同dos命令后面的那些參數
百度知道

6:運行java程序

創建完源文件后,由java編譯器(javac)編譯點java文件成點class文件,點class文件不是可以直接運行的可執行程序,他就是個字節碼文件,字節碼文件呢,java虛擬機來解釋運行(java)。編譯再加上jvm的解釋運行,所以說java是半解釋語言。

  • ** 編譯時。**

創建完源文件之后,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然后引用,否則直接引用,這個有點象make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報“cant find symbol”的錯誤。

  • 注釋處理,處理所有注釋
  • 詞法,語義分析
    把源代碼的字符轉為標記,比如說int 轉化為一個標記。(token)
  • 語法樹能表示一個結構正確的源程序的抽象,但無法保證源程序是符合邏輯的。而語義分析的主要任務是讀結構上正確的源程序進行上下文有關性質的審查。語義分析過程分為標注檢查和數據及控制流分析兩個步驟:
        • 標注檢查步驟檢查的內容包括諸如變量使用前是否已被聲明、變量和賦值之間的數據類型是否匹配等
        • 數據及控制流分析是對程序上下文邏輯更進一步的驗證,它可以檢查出諸如程序局部變量在使用前是否有賦值、方法的每條路徑是否都有返回值、是否所有的受查異常都被正確處理了等問題。
  • 字節碼生成

  • 運行時

    • java虛擬機。。。。
      類加載器把類裝入java虛擬機:加載,鏈接,初始化。
    • 加載:定位到相應的類 裝入。然后還要把那些類名,方法名,變量名,修飾符,方法返回類型裝入常量池。并在堆上建立一個class對象。
    • 鏈接:驗證,準備,解析
    • 驗證,為了計算機的安全,看看這程序有沒有害處
    • 準備,為類變量分配內存,給默認值
    • 解析,從類型的常量池中找到該類型的符合引用的東西,把符號引用變成直接引用
    • 初始化,初始化靜態變量
    • 使用
    • 回收
      cnblogs

構造方法

每個類都會默認有的啦,即使你覺得自己根本沒有寫,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,726評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,796評論 18 139
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,680評論 0 11
  • 這是要干嘛?明天見分曉嘍……
    S小妖閱讀 591評論 0 0
  • 我非常非常討厭的一個人的表情就是斜眼用眼角風瞟了一眼的這么個眼神 那種感覺會讓興高采烈的一個人,立刻馬上的茫然,恐...
    神采飛揚的魚閱讀 170評論 0 0