1. 程式人生 > >怒肝倆月,新鮮出爐史上最有趣的Java小白手冊,第一版,每個 Java 初學者都應該收藏

怒肝倆月,新鮮出爐史上最有趣的Java小白手冊,第一版,每個 Java 初學者都應該收藏

這麼說吧,在我眼裡,Java 就是最流行的程式語言,沒有之一(PHP 往一邊站)。不僅崗位多,容易找到工作,關鍵是薪資水平也到位,不學 Java 虧得慌,對吧?

那可能零基礎學程式設計的小夥伴就會頭疼了,網上關於 Java 的大部分技術文章都不夠幽默,不夠風趣,不夠系列,急需要一份能看得進去的學習手冊,那我覺得我肝的這份手冊正好符合要求,並且會一直持續更新下去。

第一版的內容暫時包含兩方面,Java 基礎和 Java 面向物件程式設計。來吧,先上目錄,一睹為快。

01、Java 基本語法簡介
02、Java 基本資料型別簡介
03、Java main() 方法簡介
04、Java 的流程控制語句
05、Java 包的簡介
06、Java 到底是值傳遞還是引用傳遞
07、Java 的類和物件
08、Java 構造方法
09、Java 抽象類
10、Java 介面
11、Java 繼承
12、this 關鍵字
13、super 關鍵字
14、重寫和過載
15、static 關鍵字
16、Java 列舉
17、final 關鍵字

目錄欣賞完了,接下來就是拜讀精華內容的時間,搬個小板凳,認認真真好好學吧,學到就是賺到!

一、Java 基本語法簡介

01、資料型別

Java 有 2 種資料型別,一種是基本資料型別,一種是引用型別。

基本資料型別用於儲存簡單型別的資料,比如說,int、long、byte、short 用於儲存整數,float、double 用於儲存浮點數,char 用於儲存字元,boolean 用於儲存布林值。

不同的基本資料型別,有不同的預設值和大小,來個表格感受下。

資料型別 預設值 大小
boolean false 1位元
char '\u0000' 2位元組
byte 0 1位元組
short 0 2位元組
int 0 4位元組
long 0L 8位元組
float 0.0f 4位元組
double 0.0 8位元組

引用型別用於儲存物件(null 表示沒有值的物件)的引用,String 是引用型別的最佳代表,比如說 String cmower = "沉默王二"

02、宣告變數

要宣告一個變數,必須指定它的名字和型別,來看一個簡單的示例:

int age;
String name;

count 和 name 在聲明後會得到一個預設值,按照它們的資料型別——不能是區域性變數(否則 Java 編譯器會在你使用變數的時候提醒要先賦值),必須是類成員變數。

public class SyntaxLocalVariable {
    int age;
    String name;

    public static void main(String[] args) {
        SyntaxLocalVariable syntax = new SyntaxLocalVariable();
        System.out.println(syntax.age); // 輸出 0
        System.out.println(syntax.name);  // 輸出 null
    }
}

也可以在宣告一個變數後使用“=”操作符進行賦值,就像下面這樣:

int age = 18;
String name = "沉默王二";

我們定義了 2 個變數,int 型別的 age 和 String 型別的 name,age 賦值 18,name 賦值為“沉默王二”。

每行程式碼後面都跟了一個“;”,表示當前語句結束了。

在 Java 中,變數最好遵守命名約定,這樣能提高程式碼的可閱讀性。

  • 以字母、下劃線(_)或者美元符號($)開頭
  • 不能使用 Java 的保留字,比如說 int 不能作為變數名

03、陣列

陣列在 Java 中佔據著重要的位置,它是很多集合類的底層實現。陣列屬於引用型別,它用來儲存一系列指定型別的資料。

宣告陣列的一般語法如下所示:

type[] identiier = new type[length];

type 可以是任意的基本資料型別或者引用型別。來看下面這個例子:

public class ArraysDemo {
    public static void main(String[] args) {
        int [] nums = new int[10];
        nums[0] = 18;
        nums[1] = 19;
        System.out.println(nums[0]);
    }
}

陣列的索引從 0 開始,第一個元素的索引為 0,第二個元素的索引為 1。為什麼要這樣設計?感興趣的話,你可以去探究一下。

通過變數名[索引]的方式可以訪問陣列指定索引處的元素,賦值或者取值是一樣的。

04、關鍵字

關鍵字屬於保留字,在 Java 中具有特殊的含義,比如說 public、final、static、new 等等,它們不能用來作為變數名。為了便於你作為參照,我列舉了 48 個常用的關鍵字,你可以瞅一瞅。

  1. abstract: abstract 關鍵字用於宣告抽象類——可以有抽象和非抽象方法。

  2. boolean: boolean 關鍵字用於將變數宣告為布林值型別,它只有 true 和 false 兩個值。

  3. break: break 關鍵字用於中斷迴圈或 switch 語句。

  4. byte: byte 關鍵字用於宣告一個可以容納 8 個位元的變數。

  5. case: case 關鍵字用於在 switch 語句中標記條件的值。

  6. catch: catch 關鍵字用於捕獲 try 語句中的異常。

  7. char: char 關鍵字用於宣告一個可以容納無符號 16 位位元的 Unicode 字元的變數。

  8. class: class 關鍵字用於宣告一個類。

  9. continue: continue 關鍵字用於繼續下一個迴圈。它可以在指定條件下跳過其餘程式碼。

  10. default: default 關鍵字用於指定 switch 語句中除去 case 條件之外的預設程式碼塊。

  11. do: do 關鍵字通常和 while 關鍵字配合使用,do 後緊跟迴圈體。

  12. double: double 關鍵字用於宣告一個可以容納 64 位浮點數的變數。

  13. else: else 關鍵字用於指示 if 語句中的備用分支。

  14. enum: enum(列舉)關鍵字用於定義一組固定的常量。

  15. extends: extends 關鍵字用於指示一個類是從另一個類或介面繼承的。

  16. final: final 關鍵字用於指示該變數是不可更改的。

  17. finally: finally 關鍵字和 try-catch 配合使用,表示無論是否處理異常,總是執行 finally 塊中的程式碼。

  18. float: float 關鍵字用於宣告一個可以容納 32 位浮點數的變數。

  19. for: for 關鍵字用於啟動一個 for 迴圈,如果迴圈次數是固定的,建議使用 for 迴圈。

  20. if: if 關鍵字用於指定條件,如果條件為真,則執行對應程式碼。

  21. implements: implements 關鍵字用於實現介面。

  22. import: import 關鍵字用於匯入對應的類或者介面。

  23. instanceof: instanceof 關鍵字用於判斷物件是否屬於某個型別(class)。

  24. int: int 關鍵字用於宣告一個可以容納 32 位帶符號的整數變數。

  25. interface: interface 關鍵字用於宣告介面——只能具有抽象方法。

  26. long: long 關鍵字用於宣告一個可以容納 64 位整數的變數。

  27. native: native 關鍵字用於指定一個方法是通過呼叫本機介面(非 Java)實現的。

  28. new: new 關鍵字用於建立一個新的物件。

  29. null: 如果一個變數是空的(什麼引用也沒有指向),就可以將它賦值為 null。

  30. package: package 關鍵字用於宣告類所在的包。

  31. private: private 關鍵字是一個訪問修飾符,表示方法或變數只對當前類可見。

  32. protected: protected 關鍵字也是一個訪問修飾符,表示方法或變數對同一包內的類和所有子類可見。

  33. public: public 關鍵字是另外一個訪問修飾符,除了可以宣告方法和變數(所有類可見),還可以宣告類。main() 方法必須宣告為 public。

  34. return: return 關鍵字用於在程式碼執行完成後返回(一個值)。

  35. short: short 關鍵字用於宣告一個可以容納 16 位整數的變數。

  36. static: static 關鍵字表示該變數或方法是靜態變數或靜態方法。

  37. strictfp: strictfp 關鍵字並不常見,通常用於修飾一個方法,確保方法體內的浮點數運算在每個平臺上執行的結果相同。

  38. super: super 關鍵字可用於呼叫父類的方法或者變數。

  39. switch: switch 關鍵字通常用於三個(以上)的條件判斷。

  40. synchronized: synchronized 關鍵字用於指定多執行緒程式碼中的同步方法、變數或者程式碼塊。

  41. this: this 關鍵字可用於在方法或建構函式中引用當前物件。

  42. throw: throw 關鍵字主動丟擲異常。

  43. throws: throws 關鍵字用於宣告異常。

  44. transient: transient 關鍵字在序列化的使用用到,它修飾的欄位不會被序列化。

  45. try: try 關鍵字用於包裹要捕獲異常的程式碼塊。

  46. void: void 關鍵字用於指定方法沒有返回值。

  47. volatile: volatile 關鍵字保證了不同執行緒對它修飾的變數進行操作時的可見性,即一個執行緒修改了某個變數的值,這新值對其他執行緒來說是立即可見的。

  48. while: 如果迴圈次數不固定,建議使用 while 迴圈。

05、操作符

除去“=”賦值操作符,Java 中還有很多其他作用的操作符,我們來大致看一下。

①、算術運算子

  • +(加號)
  • –(減號)
  • *(乘號)
  • /(除號)
  • %(取餘)

來看一個例子:

public class ArithmeticOperator {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;

        System.out.println(a + b);//15  
        System.out.println(a - b);//5  
        System.out.println(a * b);//50  
        System.out.println(a / b);//2  
        System.out.println(a % b);//0  
    }
}

“+”號比較特殊,還可以用於字串拼接,來看一個例子:

String result = "沉默王二" + "一枚有趣的程式設計師";

②、邏輯運算子

邏輯運算子通常用於布林表示式,常見的有:

  • &&(AND)多個條件中只要有一個為 false 結果就為 false
  • ||(OR)多個條件只要有一個為 true 結果就為 true
  • !(NOT)條件如果為 true,加上“!”就為 false,否則,反之。

來看一個例子:

public class LogicalOperator {
    public static void main(String[] args) {
        int a=10;
        int b=5;
        int c=20;
        System.out.println(a<b&&a<c);//false
        System.out.println(a>b||a<c);//true
        System.out.println(!(a<b)); // true
    }
}

③、比較運算子

  • &lt; (小於)
  • &lt;= (小於或者等於)
  • &gt; (大於)
  • &gt;= (大於或者等於)
  • == (相等)
  • != (不等)

06、程式結構

Java 中最小的程式單元叫做類,一個類可以有一個或者多個欄位(也叫作成員變數),還可以有一個或者多個方法,甚至還可以有一些內部類。

如果一個類想要執行,就必須有一個 main 方法——程式執行的入口,就好像人的嘴一樣,嗯,可以這麼牽強的理解一下。

public class StructureProgram {
    public static void main(String[] args) {
        System.out.println("沒有成員變數,只有一個 main 方法");
    }
}
  • 類名叫做 StructureProgram,在它裡面,只有一個 main 方法。
  • {} 之間的程式碼稱之為程式碼塊。
  • 以上原始碼將會儲存在一個字尾名為 java 的檔案中。

07、編譯然後執行程式碼

通常,一些教程在介紹這塊內容的時候,建議你通過命令列中先執行 javac 命令將原始碼編譯成位元組碼檔案,然後再執行 java 命令指定程式碼。

但我不希望這個糟糕的局面再繼續下去了——新手安裝配置 JDK 真的蠻需要勇氣和耐心的,稍有不慎,沒入門就先放棄了。況且,在命令列中編譯原始碼會遇到很多莫名其妙的錯誤,這對新手是極其致命的——如果你再遇到這種老式的教程,可以吐口水了。

好的方法,就是去下載 IntelliJ IDEA,簡稱 IDEA,它被業界公認為最好的 Java 整合開發工具,尤其在智慧程式碼助手、程式碼自動提示、程式碼重構、程式碼版本管理(Git、SVN、Maven)、單元測試、程式碼分析等方面有著亮眼的發揮。IDEA 產於捷克(位於東歐),開發人員以嚴謹著稱。IDEA 分為社群版和付費版兩個版本,新手直接下載社群版就足夠用了。

安裝成功後,可以開始敲程式碼了,然後直接右鍵執行(連儲存都省了),結果會在 Run 面板中顯示,如下圖所示。

想檢視反編譯後的位元組碼的話,可以在 src 的同級目錄 target/classes 的包路徑下找到一個 StructureProgram.class 的檔案(如果找不到的話,在目錄上右鍵選擇「Reload from Disk」)。

可以雙擊開啟它。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.cmower.baeldung.basic;

public class StructureProgram {
    public StructureProgram() {
    }

    public static void main(String[] args) {
        System.out.println("沒有成員變數,只有一個 main 方法");
    }
}

IDEA 預設會用 Fernflower 將 class 位元組碼反編譯為我們可以看得懂的 Java 程式碼。實際上,class 位元組碼(請安裝 show bytecode 外掛)長下面這個樣子:

// class version 57.65535 (-65479)
// access flags 0x21
public class com/cmower/baeldung/basic/StructureProgram {

  // compiled from: StructureProgram.java

  // access flags 0x1
  public <init>()V
   L0
    LINENUMBER 3 L0
    ALOAD 0
    INVOKESPECIAL java/lang/Object.<init> ()V
    RETURN
   L1
    LOCALVARIABLE this Lcom/cmower/baeldung/basic/StructureProgram; L0 L1 0
    MAXSTACK = 1
    MAXLOCALS = 1

  // access flags 0x9
  public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 5 L0
    GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
    LDC "\u6ca1\u6709\u6210\u5458\u53d8\u91cf\uff0c\u53ea\u6709\u4e00\u4e2a main \u65b9\u6cd5"
    INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
   L1
    LINENUMBER 6 L1
    RETURN
   L2
    LOCALVARIABLE args [Ljava/lang/String; L0 L2 0
    MAXSTACK = 2
    MAXLOCALS = 1
}

新手看起來還是有些懵逼的,建議過過眼癮就行了。

二、Java 基本資料型別簡介

01、布林

相關推薦

新鮮有趣Java手冊第一版每個 Java 初學者應該收藏

這麼說吧,在我眼裡,Java 就是最流行的程式語言,沒有之一(PHP 往一邊站)。不僅崗位多,容易找到工作,關鍵是薪資水平也到位,不學 Java 虧得慌,對吧? 那可能零基礎學程式設計的小夥伴就會頭疼了,網上關於 Java 的大部分技術文章都不夠幽默,不夠風趣,不夠系列,急需要一份能看得進去的學習手冊,那我覺

全部python工具新鮮拿走不謝別客氣

一、Python網頁爬蟲工具集 Scrapy Beautiful Soup Python-Goose 小編髮python可是好勤快的,關注小編 1.尋求python 愛好者 2.目的學習 3.我提供的學習書籍,學習視訊,為了映照學習的氣

關於int和integer(全面認真的總結新鮮我也標題黨一次把)

首先int和integer有是區別,是個人都知道integer是int的封裝類,int是java 的一個基本資料型別,是一個關鍵字。然後可能還會有人說int預設是0,integer物件預設是null,這有一個前提,那是作為類的成員,如果你在一個方法中出現int a;syste

有1000瓶藥水其中只有一瓶有毒。現在用鼠進行實驗鼠只要服用任意量有毒藥水就會在24小時內死亡。問至少要用多少隻鼠進行實驗才能檢測哪瓶藥水有毒?

時間不是問題,24小時內肯定可以找出有毒的那瓶。  給1000個瓶分別標上如下標籤(10位長度):  0000000001 (第1瓶)  0000000010 (第2瓶)  0000000011 (第3瓶)  ......  1111101000 (第1000瓶)  從編號

短小精悍的JavaScript編寫的俄羅斯方塊僅僅60行程式碼

我要分享 經常會看見某些所謂的大牛,老是拿工作年限做實力的標籤,要他拿出硬本事有人還真不如一個入行兩年的前端工作者,一個經驗用很多年真的有用嗎?希望那些所謂的大牛能反省下。也希望能警醒到各位學程式設計的小夥伴。 今天給大家秀的肌肉就是70行程式碼搞定俄羅斯方塊,效果圖如下:

AS打jar包打aar包簡單打法--無需輸入程式碼和操作gradle終端

寫安卓專案時候偶爾需要將專案工程打包出來供別人用,有時候打出jar包也會叫sdk,看網上教程出現打包不成功,或者連資原始檔,本身有的依賴都一起打進去了,所以摸索出了一種只打出jar包,裡面只包含java程式碼,不包含lib裡面的jar包,這種純粹的jar包。如果需要一起使用可

全的Python資料大放送你敢來我就敢送!

基礎入門類 《Python簡明教程》:這是一本只有100頁左右的小冊子,你可以迅速的瀏覽並敲一遍程式碼,或多或少都會提升你的Python基礎能力; 《笨方法學Python》:這本書同樣非常的短小精悍,全書是以習題的形式讓讀者掌握有關Python的基礎知識,裡面的程式碼建議讀者能夠敲一遍;

全的ASP.NET MVC路由配置以後RouteConfig再弄不懂神仙難救你啦~

繼續延續坑爹標題系列。其實只是把apress.pro.asp.net.mvc.4.framework裡的CHAPTER 13翻譯過來罷了,當做自己總結吧。內容看看就好,排版就不要吐槽了,反正我知道你也不會反對的。 先說一下基本的路由規則原則。基本的路由規則是

全的ASP.NET MVC路由配置以後RouteConfig再弄不懂神仙難救你啦

繼續延續坑爹標題系列。其實只是把apress.pro.asp.net.mvc.4.framework裡的CHAPTER 13翻譯過來罷了,當做自己總結吧。內容看看就好,排版就不要吐槽了,反正我知道你也不會反對的。 XD 首先說URL的構造。 其實這個也談不上構造,只是語

簡單的springcloud微服務入門例項開箱即用工資翻倍不是夢

        在傳統的IT行業軟體大多都是各種獨立系統的堆砌,這些系統的問題總結來說就是擴充套件性差,可靠性不高,維護成本高。到後面引入了SOA服務化,但是,由於 SOA 早期均使用了匯流排模式,這種匯流排模式是與某種

全人工智能入門學習資料限時免費領取!

產業 相關 text src 人工智 cda pytho 資料 ecc 資料主題總結:Linux、python、面向對象、書籍、AI數學基礎、AI面試資料、AI最全產業報告 Linux Python 面向對象 書籍 AI數學基礎 AI面試資料 AI最全產業報告 加微:hcg

11程式語言排行榜新鮮這些經典圖書等你來撩!

​再過兩個月,TIOBE 就將宣佈 2018 年的年度程式語言。年度語言有望出現在前 5 名:Java、C、C+、Python 和 Visual Basic.NET 中。每年,我們都希望一些有創意特性的程式語言獲獎,但是 2018 年度語言桂冠很可能由一個成熟的語言摘得。 當然,今年也有出現了一

新鮮的JSON拿走不謝!

今天 而不是 信息 ipo 轉義字符 ray geometry turn base 一、JSON簡介 1、JSON全稱是JavaScript Object Notation即JavaScript對象標記法。 JSON是一種輕量級(Light-Weight)、基於文本的(Te

今年新鮮的30個流行Android庫你一定需要

architect 9.png 布局管理 文檔 邊框 fmt 擴展 介紹 算法 作者|Michal Bialas 2017年快過去了,你年初的定的目標都快完成了嗎?總結過去三個月內發布的 最新的30 個 Android 庫和項目。你一定需要,建議收藏!讓你事半功倍 1

阿拉丁|微信程序10榜單生活服務類程序回歸主體

解決 http 服務類 客流量 獲客方式 同城 family 附近 wid 10月31日,阿拉丁小程序數據統計平臺發布了2018年10月微信小程度報告,同時公布了10月份的TOP100榜單。“同程藝龍酒店機票火車”小程序繼續有著穩定的表現,穩坐10月榜單的“頭把交椅”。 而

CES2019創新獎新鮮地平線Matrix自動駕駛計算平臺獲獎

北京2018年11月9日電 /美通社/ -- 11月8日,CES主辦方公佈了2019 CES創新獎( Innovation Awards)獲獎名單,由地平線自主研發的Matrix自動駕駛計算平臺從眾多參展廠商的技術產品中脫穎而出,獲得車輛智慧和自動駕駛技術類的創新獎,此外一同獲獎的還有W

2018年度詞彙(科技類熱詞)新鮮提前劇透吸金的行業!

什麼?身為一個網際網路人,你還不知道2018年度詞彙以及科技類熱詞。那麼,請收下我鄙視的眼神。你求我啊我就告訴你。什麼?就不求,那我也要說,哼~   1、“確認過眼神,是遇到對的人” 這首《醉赤壁》是收錄在林俊杰2008年發行的專輯《JJ陸》中的一首歌,由方文山填詞,酷愛赤壁故事的林俊杰親自操

來來來。。新鮮java程式設計題搜**遊

這2019屆遊戲校招我感覺巨坑,選擇題分為三部分,遊戲知識部分,基本資料分析部分(給一段文字,按題目選擇資料正確的),還有基礎知識部分,這次做感覺java的基本知識較少,jvm好多。。根本不瞭解,作業系統也好多。。。感覺筆試很懸。。複習不足呀。。牛客網的題目真的沒啥用這和說好

新鮮2019最新大廠面試題總彙!

   在這個網際網路技術快速迭代的時代,每個程式設計師都知道技術對於職業發展的重要性,那些技術好的程式設計師不僅薪資高,而且大多數集中在一線網際網路企業工作,讓人感覺非常高大上的同時,也想去大廠做程式設計師。然而很多人沒有入職大廠並不是自己沒有技術,而是自己沒有在大廠任職過的經驗,對於大廠

2018年12程式語言排行榜新鮮!!Visual Basic.NET首次進入前五

TIOBE釋出了2018年12月的程式語言排行榜,令人驚訝的是,微軟的Visual Basic.NET排名正在上升。與去年排名第七相比,現在排名第五。 Visual Basic是一種多正規化、面向物件的程式語言。TIOBE認為,它的崛起之所以令人驚訝,是因為沒有多少專業軟體開發人員會對這種語言給