1. 認識Java
Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和跨平臺部署的支持環境,并廣泛應用于嵌入式系統、移動終端、企業服務器、大型機等各種場合。
1.1 Java的發展歷史
Java 語言源于 1991 年 4 月,Sun 公司 James Gosling?博士領導的綠色計劃(Green Project) 開始啟動,此計劃最初的目標是開發一種能夠在各種消費性電子產品(如機頂盒、冰箱、收音機等)上運行的程序架構。這個就是Java的前身: Oak (得名與Java創始人James Gosling辦公室外的一棵橡樹),但由于這些智能化家電的市場需求沒有預期的高,Sun公司放棄了該項計劃。隨著1995年代互聯網的發展,Sun公司看見Oak在互聯網上應用的前景,于是改造了Oak,于1995年5月以Java的名稱正式發布,并提出“Write once, Run anywhere" 的口號。
1.2 Java的語言特性
??簡單性
Java語法是C++語法的一個“純凈版本”,相當于對C++做了一個減法。這里沒有頭文件、指針運算(甚至指針語法)、結構、聯合、操作符重載、虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。
??面向對象
在Java的世界里,一切皆對象。比如:人、狗、手機、電腦等都是對象。所謂面向對象,就是依靠對象之間的交互來完成事情,比如:人用手機網上購物,狗吃骨頭。Java的面向對象特性與C++旗鼓相當,與C++的主要不同點在于多重繼承。在Java中,取而代之的是更簡單的接口概念。而且與C++相比,Java提供了更豐富的運行時自省功能。
??分布式(微服務)
Java有豐富的例程庫,用于處理像HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網絡上的對象,其便捷程度就好像訪問本地文件一樣。
??健壯性
Java與C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數據的可能性(對于曾經花費幾個小時來檢查由于指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題。
??安全性
Java適用于網絡/分布式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒、防篡改的系統。從一開始,Java就設計成能夠防范常見的各種攻擊:運行時堆棧溢出;蠕蟲和病毒常用的攻擊手段;破壞自己進程空間之外的內存;未經授權讀寫文件……
??體系結構中立
編譯器生成一個體系結構中立的目標文件格式,按照該格式規范生成的文件,只要有Java運行時系統,這些編譯后的代碼就可以在許多處理器上運行。而且其他語言編寫的程序,在編譯后如果能夠嚴格按照字節碼文件的規范生成.class文件,也可以在JVM上運行。
Java編譯器通過生成與特定計算機體系結構無關的字節碼指令來實現這一特性。精心設計的字節碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。這就是為什么可以:“Wrice once,Run anywhere”。
??可移植性
與C/C++不同,Java規范中沒有“依賴具體實現的地方”。基本數據類型的大小以及有關運算都做了明確的說明。例如,Java中的int永遠是32位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼移植時令人頭疼的主要問題。
??解釋性
Java為了實現與平臺無關,自己維護了一套基于棧架構的指令集,Java源代碼經過編譯之后,字節碼文件中的指令就是按照自己的指令集來組織的,但是在具體硬件環境中運行時,系統并不能識別,因為Java程序在執行時,Java解釋器會逐條的將字節碼文件中的指令翻譯成CPU的指令集。
??高性能
邊解釋邊執行,垃圾會說等導致了Java代碼運行效率偏低,近年來JVM也在不斷的優化,比如:JIT(即時編譯器),熱點代碼探測,讓Java程序的執行效率大幅提高,在有些場合不亞于C/C++。
??多線程
Java在當時很超前。它是第一個支持并發程序設計的主流語言。多線程可以帶來更好的交互響應和實時行為。并發程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。
??動態性
Java與C/C++相比更加具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變量,而對客戶端沒有任何影響。在Java中找出運行時類型信息十分簡單(反射的特性,后續會學到)
Java不僅僅是一門編程語言,也是一個由一系列計算機軟件和規范組成的技術體系。
1.3 Java 開發環境的安裝
1. 安裝JDK
目前來說,JDK8或者JDK17是比較穩定的。
我們進入JDK17官網進行下載。
下載好之后安裝到指定路徑即可。?
2. 配置環境變量
簡單來說,將JDK的路徑添加到path中即可。
?
3. 檢驗JDK是否安裝成功?
?
4. 安裝idea
這個也是直接去idea的idea官網下載即可。
2. 第一個java程序
public class Test{public static void main(String[] args){System.out.println("Hello world");}
}
Java是一門半編譯型、半解釋型語言。先通過 javac 編譯程序把源文件進行編譯,編譯后生成的 .class 文件是由字節碼組成的平臺無關、面向JVM的文件。最后啟動java虛擬機來運行 .class 文件,此時JVM會將字節碼轉換成平臺能夠理解的形式來運行。
PS D:\caryon\code\java> javac Test.java
PS D:\caryon\code\java> java Test
Hello world
當然,以后的代碼編寫與運行我們可以使用idea來完成。
注意:在一個源文件中只能有一個public修飾的類,而且源文件名字必須與public修飾的類名字相同。
JDK、JRE、JVM之間的關系
JDK(Java Development Kit):Java開發工具包,提供給Java程序員使用,包含了JRE,同時還包含了編譯器javac與自帶的調試工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java運行時環境,包含了JVM,Java基礎類庫。是使用Java語言編寫程 序運行的所需環境。
JVM:Java虛擬機,運行Java代碼
3. 注釋
Java中的注釋主要分為以下三種:
??單行注釋:// 注釋內容(用的最多)
??多行注釋:/* 注釋內容*/(不推薦)
??文檔注釋: /** 文檔注釋 */(常見于方法和類之上描述方法和類的作用),可以被javadoc工具解析,生成一套以網頁文件形式體現的程序說明文檔
注意:
1. 多行注釋不能嵌套使用2. 不論是單行還是多行注釋,都不參與編譯,即編譯之后生成的 .class 文件中不包含注釋信息。
/**
文檔注釋:@version v1.0.0@author will作用HelloWorld類,入門第一個程序練習
*/
public class HelloWorld{
/*
多行注釋:
1. main方法是Java程序的入口方法
2. main函數的格式是固定的,必須為public static void main(String[] args)
*//**main方法是程序的入口函數@param args 命令行參數。*/public static void main(String[] args){// 單行注釋:System.out.println是Java中標準輸出,會將內容輸出到控制臺System.out.println("Hello World");}
}
在cmd中,還可以直接使用javadoc工具從Java源碼中抽離出注釋,如:
javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java
4. 標識符與關鍵字
在程序中,由用戶給類名、方法名或者變量所取的名字稱為標識符。標識符中可以包含字母、數字、下劃線和 $ 符號等等。 需要注意的是標識符不能以數字開頭,也不能是關鍵字,且嚴格區分大小寫。
一般來說標識符是可以由用戶自由編輯的,但是在面對多人協同時有如下命名軟規則:
類名:每個單詞的首字母大寫(大駝峰)
方法名:首字母小寫,后面每個單詞的首字母大寫(小駝峰)
變量名:與方法名規則相同
至于關鍵字的內容,就和C語言一樣,后面逐次介紹