教程揭秘 | 動(dòng)力節(jié)點(diǎn)內(nèi)部Java零基礎(chǔ)教學(xué)文檔首次公開(kāi)!
什么?
動(dòng)力節(jié)點(diǎn)Java教學(xué)文檔要公開(kāi)?
大家快奔走相告,快來(lái)看看?。?/strong>
內(nèi)部教學(xué)機(jī)密,首次公開(kāi),錯(cuò)過(guò)可惜啊~
Java從0到1,全部?jī)?nèi)容大揭秘,整體文檔大放送?。?!
帶你零基礎(chǔ)入門(mén)~

今天更新第一篇:JavaSE?

相信大家既然關(guān)注了動(dòng)力節(jié)點(diǎn),那么對(duì)Java就不會(huì)很陌生。
甚至很熟悉了就是說(shuō)~
畢竟也不看看咱還是干什么的~
那么
今天開(kāi)始
不會(huì)的小伙伴就從頭開(kāi)始學(xué),
有基礎(chǔ)的小伙伴再?gòu)?fù)習(xí)鞏固下吧!

01章:
初識(shí)JAVA
【主要內(nèi)容】
1.?計(jì)算機(jī)語(yǔ)言發(fā)展史
2.?Java發(fā)展歷簡(jiǎn)介
3.?Java語(yǔ)法的特點(diǎn)
4.?Java跨平臺(tái)原理
5.?常用的DOS命令
6.?Java開(kāi)發(fā)環(huán)境搭建
7.?開(kāi)發(fā)第一個(gè)Java程序
8.?代碼注釋
9.?常用的開(kāi)發(fā)工具
10.?反編譯工具
【學(xué)習(xí)目標(biāo)】

1.?計(jì)算機(jī)語(yǔ)言發(fā)展史【了解】
?

1.1?機(jī)器語(yǔ)言
使用0和1來(lái)編寫(xiě)代碼,開(kāi)發(fā)者需要掌握硬件知識(shí)。
1.2?匯編語(yǔ)言
使用英文單詞來(lái)編寫(xiě),開(kāi)發(fā)者需要掌握硬件知識(shí)。
1.3?高級(jí)語(yǔ)言
使用英文單詞來(lái)編寫(xiě),開(kāi)發(fā)者不需要掌握硬件知識(shí)。
2.?JAVA發(fā)展簡(jiǎn)史【了解】
2.1??JAVA的誕生
在1991年時(shí)候,詹姆斯·高斯林(James Gosling)在SUN公司的工程師小組想要設(shè)計(jì)這樣一種小型計(jì)算機(jī)語(yǔ)言。該語(yǔ)言主要用于像電視盒這樣的消費(fèi)類(lèi)電子產(chǎn)品。
2.2??SUN公司簡(jiǎn)介
l?美國(guó)SUN公司全稱(chēng)Stanford University Network
l?在中國(guó)大陸的正式中文名為“太陽(yáng)計(jì)算機(jī)系統(tǒng)(中國(guó))有限公司”
l?在臺(tái)灣中文名為“升陽(yáng)電腦公司”
l?2009年,甲骨文(Oracle)公司宣布收購(gòu)SUN?。
l?2010年,Java編程語(yǔ)言的共同創(chuàng)始人之一詹姆斯·高斯林從Oracle公司辭職。
2.3??JAVA為什么被發(fā)明
l?Green項(xiàng)目
l?應(yīng)用環(huán)境:像電視盒這樣的消費(fèi)類(lèi)電子產(chǎn)品。
l?要求:因?yàn)椴煌膹S商選擇不同的CPU和操作系統(tǒng),因此要求該語(yǔ)言不能和特定的體系結(jié)構(gòu)綁在一起所以要求:語(yǔ)言本身是中立的,也就是跨平臺(tái)。
2.4??JAVA的發(fā)展史
l?1991年,Sun公司的Green項(xiàng)目(Oak語(yǔ)言)
l?1995年,推出JAVA測(cè)試版
l?1996年,JDK1.0
l?1997年,JDK1.1
l?1998年,JDK1.2,大大改進(jìn)了早期版本的缺陷,是一個(gè)革命性的版本,更名為Java2
l?1999 Java被分成J2SE、J2EE 和J2ME,JSP/Servlet技術(shù)誕生
l?2004年,J2SE 5.0 (1.5.0) Tiger老虎。為了表示這個(gè)版本的重要性,J2SE1.5更名為J2SE5.0。
l?2006年,J2SE 6.0 (1.6.0) Mustang野馬。此時(shí),Java的各種版本被更名,取消其中的數(shù)字"2":J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME
l?2011年,JAVA7.0
l?2014年,JAVA8.0
2.5??JAVA各版本含義
l?J2EE (JAVAEE)
Java?2 Enterprise Edition,定位在服務(wù)器端的應(yīng)用。
l?J2SE ?(JAVASE)
Java?2 Standard Edition,定位在個(gè)人計(jì)算機(jī)上的應(yīng)用。
l?J2ME ?(JAVAME)
Java?2 Micro Edition,定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上。
3.?JAVA的特點(diǎn)【了解】
3.1??JAVA是跨平臺(tái)的
Java程序的跨平臺(tái)主要是指字節(jié)碼文件可以在任何具有Java虛擬機(jī)的計(jì)算機(jī)或者電子設(shè)備上運(yùn)行,Java虛擬機(jī)中的Java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機(jī)器碼進(jìn)行運(yùn)行。
3.2??JAVA是簡(jiǎn)單的
l?不再有#include 和#define 等預(yù)處理功能
l?不再有struct、union及typedef
l?不再有函數(shù)、
l?不再有指針、不再有多重繼承
l?不再有g(shù)oto ?????
l?不再有操作符重載(Operatior Overloading)
l?不再有全局變量 ??????????
l?不再有手動(dòng)內(nèi)存管理
3.3??JAVA是安全的
l?Java取消了強(qiáng)大但又危險(xiǎn)的指針。由于指針可進(jìn)行移動(dòng)運(yùn)算,指針可隨便指向一個(gè)內(nèi)存區(qū)域,而不管這個(gè)區(qū)域是否可用,這樣做是危險(xiǎn)的,因?yàn)樵瓉?lái)這個(gè)內(nèi)存地址可能存儲(chǔ)著重要數(shù)據(jù)或者是其他程序運(yùn)行所占用的, 并且使用指針也容易數(shù)組越界。
l?Java提供了自動(dòng)內(nèi)存管理機(jī)制,由垃圾回收器在后臺(tái)自動(dòng)回收。
l?Java在字節(jié)碼的傳輸過(guò)程中使用了公開(kāi)密鑰加密機(jī)制(PKC)。
l?而在運(yùn)行環(huán)境提供了四級(jí)安全性保障機(jī)制:節(jié)碼校驗(yàn)器 - 類(lèi)裝載器 - 運(yùn)行時(shí)內(nèi)存布局 - 文件訪問(wèn)限制。
3.4??JAVA是完全面向?qū)ο蟮?/strong>
l?Java和C++都是面向?qū)ο笳Z(yǔ)言。也就是說(shuō),它們都能夠?qū)崿F(xiàn)面向?qū)ο笏枷耄ǚ庋b,繼承,多態(tài))。
l?由于C++為了照顧大量C語(yǔ)言使用者而兼容了C,使得自身僅僅成為了帶類(lèi)的C語(yǔ)言,多少影響了其面向?qū)ο蟮膹氐仔裕?/p>
l?Java則是完全的面向?qū)ο笳Z(yǔ)言,它句法更清晰,規(guī)模更小,更易學(xué)。它是在對(duì)多種程序設(shè)計(jì)語(yǔ)言進(jìn)行了深入細(xì)致研究的基礎(chǔ)上,據(jù)棄了其他語(yǔ)言的不足之處,從根本上解決了C++的固有缺陷。
3.5??JAVA是健壯的
Java是一種健壯的語(yǔ)言,吸收了C/C++ 語(yǔ)言的優(yōu)點(diǎn),但去掉了其影響程序健壯性的部分(如:指針、內(nèi)存的申請(qǐng)與釋放等)
4.?JAVA跨平臺(tái)原理【理解】
4.1??JAVA為什么能夠流行???
外部環(huán)境
l?互聯(lián)網(wǎng)的爆發(fā)式發(fā)展。
l?互聯(lián)網(wǎng)上的電腦硬件不同,軟件環(huán)境差異較大,需要一個(gè)跨平臺(tái)的語(yǔ)言。
JAVA核心優(yōu)勢(shì)
l?跨平臺(tái)
4.2??JVM虛擬機(jī)
JVM(JAVA VIRTUAL MACHINE)是一種規(guī)范,可以使用軟件來(lái)實(shí)現(xiàn),也可以使用硬件來(lái)實(shí)現(xiàn),就是一個(gè)虛擬的用于執(zhí)行bytecodes字節(jié)碼的計(jì)算機(jī)。他也定義了指令集、寄存器集、結(jié)構(gòu)棧、垃圾收集堆、內(nèi)存區(qū)域。
JVM是指在一臺(tái)計(jì)算機(jī)上由軟件或硬件模擬的計(jì)算機(jī),它類(lèi)似一個(gè)小巧而高效的CPU。
Java虛擬機(jī)是Java最核心技術(shù),也是跨平臺(tái)的基礎(chǔ)。
l?可以使用軟件來(lái)實(shí)現(xiàn)
例如:IBM, SUN, BEA等,當(dāng)然你也可以自己寫(xiě)一個(gè)JVM
l?可以使用硬件來(lái)實(shí)現(xiàn)
例如:比如SUM/Intel公司研發(fā)的java芯片
4.3??JVM和JAVA跨平臺(tái)特性
計(jì)算機(jī)的高級(jí)編程語(yǔ)言類(lèi)型一般為:?編譯型和解釋型。而Java語(yǔ)言是兩種類(lèi)型的結(jié)合。
編譯型語(yǔ)言:翻譯把整篇英文文章翻譯為中文,然后我再去閱讀。
優(yōu)點(diǎn):閱讀效率高。
缺點(diǎn):需要等待翻譯完畢。
解釋型語(yǔ)言:翻譯坐在我旁邊,給我逐行的翻譯英文文章。
優(yōu)點(diǎn):無(wú)需等待,直接就可以閱讀。
缺點(diǎn):閱讀效率低。
常見(jiàn)java程序的編寫(xiě)和執(zhí)行步驟為:
1、通過(guò)編輯器編寫(xiě) Java源程序源文件(源文件名.java).
2、通過(guò)編譯器將源程序編譯成字節(jié)碼文件(類(lèi)名.class)。
3、通過(guò)解釋器將字節(jié)碼文件解釋為對(duì)應(yīng)的機(jī)器語(yǔ)言并運(yùn)行(在JVM中運(yùn)行字節(jié)碼文件)。

以上圖片就是JAVA文件編譯成class文件后,class字節(jié)碼文件在不同設(shè)備上執(zhí)行的過(guò)程。通過(guò)在不同設(shè)備上安裝虛擬機(jī),從而實(shí)現(xiàn)了跨平臺(tái)、可移植的功能。
4.4??JAVA和C跨平臺(tái)原理的比較
l?Java:一次編譯,到處運(yùn)行

Java編譯器的作用:編譯,將源文件編譯為字節(jié)碼文件。
Java虛擬機(jī)的作用:解釋?zhuān)炎止?jié)碼文件轉(zhuǎn)換成對(duì)應(yīng)平臺(tái)的機(jī)器語(yǔ)言。
l?C:多次編譯,到處運(yùn)行
?

5.?常用DOS命令【掌握】
5.1??DOS簡(jiǎn)介
DOS是英文“Disk Operating System”的縮寫(xiě),其中文含意是“磁盤(pán)操作系統(tǒng)”。DOS是單用戶(hù)、單任務(wù)的操作系統(tǒng)。
從1981年直到1995年的15年間,磁盤(pán)操作系統(tǒng)在IBM PC兼容機(jī)市場(chǎng)中占有舉足輕重的地位。而且,若是把部分以DOS為基礎(chǔ)的Microsoft Windows版本,如Windows 95、Windows 98和Windows Me等都算進(jìn)去的話,那么其商業(yè)壽命至少可以算到2000年。微軟的所有后續(xù)版本中,磁盤(pán)操作系統(tǒng)仍然被保留著。
家族包括MS-DOS、PC-DOS、DR-DOS、PTS-DOS、ROM-DOS、JM-OS等,其中以MS-DOS最為著名。雖然這些系統(tǒng)常被簡(jiǎn)稱(chēng)為“DOS”,但幾乎沒(méi)有系統(tǒng)單純以“DOS”命名(只有一個(gè)毫無(wú)關(guān)連的1960年代IBM大型主機(jī)操作系統(tǒng)以此命名)。此外,有幾個(gè)和DOS無(wú)關(guān)、在非x86的微計(jì)算機(jī)系統(tǒng)上運(yùn)行的磁盤(pán)操作系統(tǒng)在名稱(chēng)中也有“DOS”字眼,而且在專(zhuān)門(mén)討論該機(jī)器的場(chǎng)合中也會(huì)簡(jiǎn)稱(chēng)為“DOS”(例如:AmigaDOS、AMSDOS、ANDOS、AppleDOS、Atari DOS、Commodore DOS、CSI-DOS、ProDOS、TRS-DOS等),但這些系統(tǒng)和DOS可執(zhí)行文件以及MS-DOS API并不兼容。
5.2??DOS命令簡(jiǎn)介
n?切換盤(pán)符
d: ?c:
n?目錄操作
cd ?change directory ?改變當(dāng)前文件夾
dir ?directory ?查看當(dāng)前目錄下的文件和子文件夾
????cd .. ?返回上一級(jí)目錄
cd\ ??返回根目錄
l?文件夾操作
md ??make directory創(chuàng)建當(dāng)前文件夾
rd ??remove directory刪除當(dāng)前文件夾
n?文件操作
copy ?復(fù)制文件
del ??delete刪除文件
n?常見(jiàn)輔助命令
exit ?退出命令窗口
cls ??clear screen清除屏幕
tab鍵 ?命令自動(dòng)補(bǔ)齊,幫助自動(dòng)完成,文件名或者文件夾
上下箭頭鍵 ??顯示之前或者之后已執(zhí)行過(guò)的命令
n?深入學(xué)習(xí)DOS命令
help
注意:DOS命令不區(qū)分大小寫(xiě),但是文件或文件夾需要區(qū)分大小寫(xiě)。
6.?JAVA開(kāi)發(fā)環(huán)境搭建【掌握】
6.1??JRE簡(jiǎn)介?
JRE是Java Runtime Environment的縮寫(xiě),是Java程序的運(yùn)行環(huán)境,包含了java虛擬機(jī),java基礎(chǔ)類(lèi)庫(kù)。
JRE是使用java語(yǔ)言編寫(xiě)的程序運(yùn)行所需要的軟件環(huán)境,是提供給想運(yùn)行java程序的用戶(hù)使用的。
6.2??JDK簡(jiǎn)介
JDK是Java Development Kit的縮寫(xiě),是java開(kāi)發(fā)工具包,是程序員使用java語(yǔ)言編寫(xiě)java程序所需的開(kāi)發(fā)工具包,是提供給程序員使用的。
JDK包含了JRE,同時(shí)還包含了編譯java源碼的編譯器javac,還包含了很多java程序調(diào)試和分析的工具。
如果你需要運(yùn)行java程序,只需安裝JRE就可以了。如果你需要編寫(xiě)java程序,需要安裝JDK。

總結(jié):JDK包含了JRE,JRE包含JVM。
6.3??配置JAVA開(kāi)發(fā)環(huán)境?
6.3.1??卸載JDK
根據(jù)需求再?zèng)Q定是否需要卸載,如果已經(jīng)正確安裝JDK的同學(xué)可以略過(guò)安裝步驟。
6.3.2??安裝JDK
u?下載:Download J2SDK (Java ?2 ??Software ?Development Kit) ?
?FROM ???http://java.sun.com????OR ??http://www.oracle.com
u?安裝: ?跟普通軟件安裝一樣,點(diǎn)擊下一步就OK!
6.3.3??驗(yàn)證JDK安裝
在JDK安裝目錄的bin目錄下,我們輸入命令:java –version
出現(xiàn)如下圖所示,則安裝成功:

6.3.4??環(huán)境變量配置
環(huán)境變量就是為相關(guān)命令提供一個(gè)路徑信息,告訴它到哪里去找相關(guān)文件信息:?
u?JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14
u?path:指定javac.exe和java.exe兩個(gè)命令的位置。執(zhí)行dos命令,系統(tǒng)會(huì)在path指定的路徑中尋找該命令對(duì)應(yīng)的可執(zhí)行文件,將“%JAVA_HOME%\bin”增加到path中,多個(gè)目錄用英文分號(hào)“;”隔開(kāi)。
u?classpath:指定解釋的時(shí)候class文件的位置,JDK5.0以上就不需要配置這個(gè)環(huán)境變量!JRE會(huì)自動(dòng)搜索當(dāng)前路徑下的類(lèi)文件及相關(guān)jar文件。
【注意】:配置完java環(huán)境變量后,最好重啟DOS窗口,重啟后新配置的環(huán)境變量才能生效。
6.3.5??驗(yàn)證環(huán)境變量配置
開(kāi)發(fā)DOS窗口,在任意文件目錄(不是在bin目錄下)下輸入命令:javac
出現(xiàn)如下圖所示,則配置成功:
?

7.?開(kāi)發(fā)第一個(gè)JAVA程序【掌握】
7.1?編輯階段
程序員編輯代碼并保存在磁盤(pán)上(Ctrl+S)。
public?class?HelloWorld { ?//大括號(hào)是類(lèi)的控制范圍
public?static?void?main(String[] args) {
System.out.print("hello world!");
}
}
保存為:HelloWorld.java
注意:文件的擴(kuò)展名,保證擴(kuò)展名必須為.java(例如:HelloWorld.java)
隱藏文件擴(kuò)展名步驟:
進(jìn)入控制面板 > 文件夾選項(xiàng) > 查看 ?不勾選【隱藏已知文件類(lèi)型的擴(kuò)展名】

?
7.2?編譯階段
進(jìn)入java文件所在目錄,執(zhí)行命令:javac HelloWorld.java。
切記:編譯時(shí)必須加上擴(kuò)展名.java。
7.3?執(zhí)行階段
進(jìn)入java文件所在目錄,執(zhí)行命令:java HelloWorld,以便在虛擬機(jī)中執(zhí)行字節(jié)碼(.class)文件。切記:運(yùn)行的是類(lèi)而非class文件,所以類(lèi)名后不能加擴(kuò)展名.class
7.4?總結(jié)和提升??

文件名:HelloWorld.java
??關(guān)于類(lèi)名(class name)
1.?類(lèi)的命名規(guī)范,應(yīng)首字母大寫(xiě)同時(shí)采用駝峰式命名規(guī)范(規(guī)范大家一定要遵守)。
2.?源文件中至多只有一個(gè)類(lèi)能用public聲明,并public修飾的類(lèi)必須和文件名保持一致。
3.?一個(gè)源文件可以有多個(gè)未被public修飾的類(lèi)(class),public修飾的類(lèi)至多只有一個(gè)。
4.?源文件中可以用有多個(gè)class類(lèi),當(dāng)源文件編譯之后就有多少個(gè)字節(jié)碼文件。
??關(guān)于語(yǔ)法規(guī)范
1.?花括號(hào)用于劃分程序的各個(gè)部分,方法和類(lèi)的代碼都必須以‘{’開(kāi)始以‘}’結(jié)束。
2.?代碼中沒(méi)條語(yǔ)句以英文的分號(hào)‘;’結(jié)束,注意中英文之間的切換。
3.?Java代碼對(duì)字母大小寫(xiě)敏感,如果出現(xiàn)了大小寫(xiě)拼寫(xiě)錯(cuò)誤,程序無(wú)法運(yùn)行(例如string)。
4.?main方法是Java應(yīng)用程序的入口方法,它有固定的書(shū)寫(xiě)格式。
5.?print()或println()中的內(nèi)容用英文雙引號(hào)包裹,代表內(nèi)容原樣輸出。
??編譯時(shí)常見(jiàn)的問(wèn)題
第一次難免會(huì)出現(xiàn)很多問(wèn)題,但是出現(xiàn)問(wèn)題不要怕,這是一件好事,解決問(wèn)題的過(guò)程就是提成進(jìn)步的過(guò)程。以下是初學(xué)者常犯的一些錯(cuò)誤:
1.?環(huán)境變量配置錯(cuò)誤,無(wú)法執(zhí)行javac命令;
2.?沒(méi)有在源文件所在目錄下執(zhí)行javac HelloWorld.java?命令;
3.?執(zhí)行javac命令后面的文件名寫(xiě)錯(cuò),例如字母大小寫(xiě);
4.?語(yǔ)法格式錯(cuò)誤,例如main方法書(shū)寫(xiě)錯(cuò)誤,使用了中文的分號(hào)等;
5.?如果文件中的類(lèi)名用public來(lái)修飾,那么文件名和public修飾的類(lèi)名必須保持一致。
6.?使用notepad++發(fā)生的編碼格式錯(cuò)誤。因?yàn)镈OS命令窗口默認(rèn)編碼為GBK,解決這個(gè)問(wèn)題需要把notepad++的編碼修改為ANSI即可。
【注意】如果我們對(duì)源代碼做了修改,那么需要對(duì)修改后的源文件先進(jìn)行編譯,然后再執(zhí)行編譯出來(lái)的字節(jié)碼文件。
7.5?編碼風(fēng)格
l?注意縮進(jìn)!
一定要有縮進(jìn)??s進(jìn)就像人得體的衣著一樣!
l?成對(duì)編程!
括號(hào)、引號(hào)都應(yīng)該寫(xiě)完后,再往里加內(nèi)容。
l?見(jiàn)名知意!
最基本的要求!
8.?代碼的注釋【掌握】
注釋就是程序員為讀者(此處的作者指的是開(kāi)發(fā)人員)作的說(shuō)明的,是一種提高程序可讀性的一種手段。源文件編譯后,注釋不會(huì)出現(xiàn)在字節(jié)碼文件中,即Java編譯器編譯時(shí)會(huì)跳過(guò)注釋語(yǔ)句。
8.1?單行注釋
單行注釋使用“//”開(kāi)頭,“//”后面的內(nèi)容均為注釋。
8.2?多行注釋
多行注釋以“/*”開(kāi)頭以“*/”結(jié)尾,在“/*”和“*/”之間的內(nèi)容為注釋?zhuān)谑褂枚嘈凶⑨寱r(shí)注意,多行注釋不能嵌套。
8.3?文檔注釋
文檔注釋以“/**”開(kāi)頭以“*/”結(jié)尾,注釋中包含一些說(shuō)明性的文字及一些JavaDoc標(biāo)簽(后期再寫(xiě)項(xiàng)目時(shí),可以生成項(xiàng)目的API)
9.?常用的開(kāi)發(fā)工具【了解】
9.1?文本編輯器
l?UltraEdit
l?EditPlus
l?notepad++?
l?sublime
9.2?集成開(kāi)發(fā)環(huán)境
l?Eclipse:一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)的開(kāi)源軟件。
l?MyEclipse:由Genuitec公司開(kāi)發(fā)的一款商業(yè)化軟件,是應(yīng)用比較廣泛的Java應(yīng)用程序集成開(kāi)發(fā)環(huán)境(后期項(xiàng)目階段使用,商業(yè)軟件要收費(fèi)) 。
l?IntelliJ IDEA:在代碼自動(dòng)提示、代碼分析等方面的具有很好的功能。
l?NetBeans:開(kāi)放源碼的Java集成開(kāi)發(fā)環(huán)境,適用于各種客戶(hù)機(jī)和Web應(yīng)用。
10.?反編譯工具【了解】
10.1?編譯和反編譯理解
編譯:把源代碼編譯為字節(jié)碼文件。
反編譯:字節(jié)碼文件反編譯為源代碼?。
10.2?反編譯命令
反編譯步驟:
1.?javac把源文件編譯為字節(jié)碼文件,例如:Test.java à?Test.class
2.?javap進(jìn)行反編譯操作,例如:javap Test
10.3?反編譯軟件
使用jd-gui.exe來(lái)實(shí)現(xiàn)反編譯。

馬上一年都要過(guò)去了!
大家年初制訂的學(xué)習(xí)計(jì)劃要實(shí)施起來(lái)了~
不能再等到明年了!
抓緊做好這最后一波沖刺吧~
更多干貨我們下期再說(shuō)!
記住!這只是開(kāi)始~
