更新時(shí)間:2018-07-20 來(lái)源:黑馬程序員JavaEE培訓(xùn)學(xué)院 瀏覽量:
第1章 Java概述
1.1 Java語(yǔ)言發(fā)展史和平臺(tái)概述
A:Java語(yǔ)言發(fā)展史
詹姆斯·高斯林(James Gosling)1977年獲得了加拿大卡爾加里大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,1983年獲得了美國(guó)卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,畢業(yè)后到IBM工作,設(shè)計(jì)IBM第一代工作站NeWS系統(tǒng),但不受重視。后來(lái)轉(zhuǎn)至Sun公司,1990年,與Patrick,Naughton和Mike Sheridan等人合作“綠色計(jì)劃”,后來(lái)發(fā)展一套語(yǔ)言叫做“Oak”,后改名為Java。
B:Java語(yǔ)言版本
*JDK 1.1.4 Sparkler 寶石 1997-09-12
*JDK 1.1.5 Pumpkin 南瓜 1997-12-13
*JDK 1.1.6 Abigail 阿比蓋爾--女子名 1998-04-24
*JDK 1.1.7 Brutus 布魯圖--古羅馬政治家和將軍 1998-09-28
*JDK 1.1.8 Chelsea 切爾西--城市名 1999-04-08
*J2SE 1.2 Playground 運(yùn)動(dòng)場(chǎng) 1998-12-04
*J2SE 1.2.1 none 無(wú) 1999-03-30
*J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
*J2SE 1.3 Kestrel 美洲紅隼(sǔn) 2000-05-08
*J2SE 1.3.1 Ladybird 瓢蟲(chóng) 2001-05-17
*J2SE 1.4.0 Merlin 灰背隼 2002-02-13
*J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
*J2SE 1.4.2 Mantis 螳螂 2003-06-26
*JAVASE 5.0 (1.5.0) Tiger 老虎
*JAVASE 5.1 (1.5.1) Dragonfly 蜻蜓
*JAVASE 6.0 (1.6.0) Mustang 野馬
*JAVASE 7.0 (1.7.0) Dolphin 海豚
1.2 JVM,JRE,JDK的概述
1.2.1 什么是跨平臺(tái)?
平臺(tái):指的是操作系統(tǒng)(Windows,Linux,Mac)
跨平臺(tái):Java程序可以在任意操作系統(tǒng)上運(yùn)行,一次編寫(xiě)到處運(yùn)行
原理:實(shí)現(xiàn)跨平臺(tái)需要依賴(lài)Java的虛擬機(jī) JVM (Java Virtual Machine)
1.2.2 JVM JRE JDK說(shuō)明
A:什么是JVM
JVM是java虛擬機(jī)(JVM Java Virtual Machine),java程序需要運(yùn)行在虛擬機(jī)上,不同平臺(tái)有自己的虛擬機(jī),因此java語(yǔ)言可以跨平臺(tái)
B:什么是JRE
包括Java虛擬機(jī)(JVM Java Virtual Machine)和Java程序所需的核心類(lèi)庫(kù)等如果想要運(yùn)行一個(gè)開(kāi)發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。
JRE:JVM+類(lèi)庫(kù)。
C:什么是JDK
JDK是提供給Java開(kāi)發(fā)人員使用的,其中包含了java的開(kāi)發(fā)工具,也包括了JRE。所以安裝了JDK,就不用在單獨(dú)安裝JRE了。
其中的開(kāi)發(fā)工具:編譯工具(javac.exe) 打包工具(jar.exe)等
JDK:JRE+JAVA的開(kāi)發(fā)工具。
D:為什么JDK中包含一個(gè)JRE
為什么JDK中包含一個(gè)JRE呢?
開(kāi)發(fā)完的程序,需要運(yùn)行一下看看效果。
E:JDK,JRE,JVM的作用和關(guān)系
JDK包含JRE 和開(kāi)發(fā)工具包
JRE 包含 核心類(lèi)庫(kù)和JVM
1.3 常用dos命令
1.3.1 打開(kāi)控制臺(tái)
win + R,然后cmd回車(chē)
1.3.2 常用命令
d: 回車(chē) 盤(pán)符切換
dir(directory):列出當(dāng)前目錄下的文件以及文件夾
cd (change directory)改變指定目錄(進(jìn)入指定目錄)
進(jìn)入 cd 目錄;cd 多級(jí)目錄
回退 cd.. ;cd\
cls : (clear screen)清屏
exit : 退出dos命令行
1.4 下載安裝JDK
請(qǐng)參考《JDK下載安裝文檔.doc》安裝步驟
1.5 helloworld案例
1.5.1 執(zhí)行流程
1.5.2 編寫(xiě)代碼步驟
首先定義一個(gè)類(lèi)
public class 類(lèi)名
在類(lèi)定義后加上一對(duì)大括號(hào)
{}
在大括號(hào)中間添加一個(gè)主(main)方法/函數(shù)
public static void main(String[] args){ }
在主方法的大括號(hào)中間添加一行輸出語(yǔ)句
System.out.println(“HelloWorld”);
1.5.3 案例代碼一
public class HelloWorld {
public static void main(String[]args) {
System.out.println("HelloWorld");
}
}
運(yùn)行代碼步驟:
? 在命令行模式中,輸入javac命令對(duì)源代碼進(jìn)行編譯,生成字節(jié)碼文件
– javac源文件名.java
? 編譯完成后,如果沒(méi)有報(bào)錯(cuò)信息,輸入java命令對(duì)class字節(jié)碼文件進(jìn)行解釋運(yùn)行,執(zhí)行時(shí)不需要添加.class擴(kuò)展名
– javaHelloWorld
1.5.4 HelloWorld案例常見(jiàn)問(wèn)題
A:找不到文件(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
a:文件擴(kuò)展名隱藏導(dǎo)致編譯失敗
b:文件名寫(xiě)錯(cuò)了
B:單詞拼寫(xiě)問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
a:class寫(xiě)成Class
b:String寫(xiě)成string
c:System寫(xiě)成system
d:main寫(xiě)成mian
C:括號(hào)匹配問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
a:把類(lèi)體的那對(duì)大括號(hào)弄掉一個(gè)
b:把方法體的那對(duì)大括號(hào)弄掉一個(gè)
c:把輸出語(yǔ)句的那對(duì)小括號(hào)弄掉一個(gè)
D:中英文問(wèn)題(都演示一下,讓學(xué)生看看出現(xiàn)的都是什么問(wèn)題)
a:提示信息:錯(cuò)誤: 非法字符:\????的格式
注意:java編程中需要的基本上都是英文字符
第2章 環(huán)境配置
2.1 工具安裝
2.1.1 Notepad軟件的安裝和配置
為了讓我們寫(xiě)的程序錯(cuò)誤看起來(lái)更直接,我們安裝一款高級(jí)記事本軟件。
Notepad軟件的安裝和配置
設(shè)置 – 首選項(xiàng) – 新建 – 默認(rèn)語(yǔ)言和編碼
2.2 環(huán)境變量配置
2.2.1 案例說(shuō)明
為什么要配置
程序的編譯和執(zhí)行需要使用到j(luò)avac和java命令,所以只能在bin目錄下寫(xiě)程序
實(shí)際開(kāi)發(fā)中,不可能把程序?qū)懙絙in目錄下,所以我們必須讓javac和java命令在任意目錄下能夠訪問(wèn)
如何配置
創(chuàng)建新的變量名稱(chēng):JAVA_HOME
計(jì)算機(jī)-右鍵屬性-高級(jí)系統(tǒng)設(shè)置-高級(jí)-環(huán)境變量-系統(tǒng)變量
為JAVA_HOME添加變量值:JDK安裝目錄
在path環(huán)境變量最前面添加如下內(nèi)容
%JAVA_HOME%\bin;
2.3 注釋
2.3.1 注釋概述
A: 什么是注釋
用于解釋說(shuō)明程序的文字
B: Java中注釋分類(lèi)
單行注釋
格式: //注釋文字
多行注釋
格式: /* 注釋文字 */
文檔注釋
格式:/**注釋文字 */
C: 注釋的作用
解釋說(shuō)明程序,幫助我們調(diào)試錯(cuò)誤
2.3.2 案例代碼
/*
注釋?zhuān)河糜诮忉屨f(shuō)明程序的文字
分類(lèi):
單行
多行
作用:解釋說(shuō)明程序,提高程序的閱讀性
*/
//這是我的HelloWorld案例
public class HelloWorld {
/*
這是main方法
main是程序的入口方法
所有代碼的執(zhí)行都是從main方法開(kāi)始的
*/
public static void main(String[] args) {
//這是輸出語(yǔ)句
System.out.println("HelloWorld");
}
}
2.4 關(guān)鍵字
2.4.1 關(guān)鍵字概述
被Java語(yǔ)言賦予特定含義的單詞
2.4.2 關(guān)鍵字特點(diǎn)
組成關(guān)鍵字的字母全部小寫(xiě)
常用的代碼編輯器,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記,非常直觀,所以我們不需要去死記硬背,在今后的學(xué)習(xí)中重要的關(guān)鍵字也會(huì)不斷的出來(lái)。
2.4.3 案例代碼三:
/*
關(guān)鍵字:被Java語(yǔ)言賦予特定含義的單詞
特點(diǎn):
A:組成關(guān)鍵字的字母全部小寫(xiě)
B:常見(jiàn)的代碼編輯器,針對(duì)關(guān)鍵字有特殊的顏色標(biāo)記
*/
public class HelloWorld {
public static void main(String[]args) {
System.out.println("HelloWorld");
}
}
第3章 語(yǔ)法格式
3.1 常量
3.1.1 常量概述
在程序執(zhí)行的過(guò)程中,其值不可以發(fā)生改變的量
3.1.2 常量分類(lèi)
字符串常量 用雙引號(hào)括起來(lái)的內(nèi)容(“HelloWorld”)
整數(shù)常量 所有整數(shù)(12,-23)
小數(shù)常量 所有小數(shù)(12.34)
字符常量 用單引號(hào)括起來(lái)的內(nèi)容(‘a(chǎn)’,’A’,’0’)
布爾常量 較為特有,只有true和false
空常量 null(數(shù)組部分講解)
3.1.3 案例代碼四:
/*
常量:在程序執(zhí)行的過(guò)程中,其值不可以發(fā)生改變的量
常量分類(lèi):
A:字符串常量 "HelloWorld"
B:整數(shù)常量 12,-23
C:小數(shù)常量 12.34
D:字符常量 'a','0'
E:布爾常量 true,false
F:空常量 null(后面講解)
*/
public class ChangLiang {
public static void main(String[]args) {
//字符串常量
System.out.println("HelloWorld");
//整數(shù)常量
System.out.println(12);
System.out.println(-23);
//小數(shù)常量
System.out.println(12.34);
//字符常量
System.out.println('a');
System.out.println('0');
//布爾常量
System.out.println(true);
System.out.println(false);
}
}
3.2 變量
3.2.1 變量概述
在程序執(zhí)行的過(guò)程中,在某個(gè)范圍內(nèi)其值可以發(fā)生改變的量
從本質(zhì)上講,變量其實(shí)是內(nèi)存中的一小塊區(qū)域
3.2.2 變量定義格式
數(shù)據(jù)類(lèi)型變量名 = 初始化值;
注意:格式是固定的,記住格式,以不變應(yīng)萬(wàn)變
3.2.3 變量圖解
3.3 數(shù)據(jù)類(lèi)型
3.3.1 計(jì)算機(jī)存儲(chǔ)單元
變量是內(nèi)存中的小容器,用來(lái)存儲(chǔ)數(shù)據(jù)。那么計(jì)算機(jī)內(nèi)存是怎么存儲(chǔ)數(shù)據(jù)的呢?無(wú)論是內(nèi)存還是硬盤(pán),計(jì)算機(jī)存儲(chǔ)設(shè)備的最小信息單元叫“位(bit)”,我們又稱(chēng)之為“比特位”,通常用小寫(xiě)的字母b表示。而計(jì)算機(jī)最小的存儲(chǔ)單元叫“字節(jié)(byte)”,通常用大寫(xiě)字母B表示,字節(jié)是由連續(xù)的8個(gè)位組成。
除了字節(jié)外還有一些常用的存儲(chǔ)單位,大家可能比較熟悉,我們一起來(lái)看看:
– 1B(字節(jié)) = 8bit
– 1KB= 1024B
– 1MB= 1024KB
– 1GB= 1024MB
– 1TB= 1024GB
3.3.2 數(shù)據(jù)類(lèi)型概述和分類(lèi)
A:為什么有數(shù)據(jù)類(lèi)型
Java語(yǔ)言是強(qiáng)類(lèi)型語(yǔ)言,對(duì)于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類(lèi)型,在內(nèi)存中分配了不同大小的內(nèi)存空間
B:Java中數(shù)據(jù)類(lèi)型的分類(lèi)
基本數(shù)據(jù)類(lèi)型、引用數(shù)據(jù)類(lèi)型
3.4 標(biāo)識(shí)符
3.4.1 標(biāo)識(shí)符概述
A 作用
給包,類(lèi),方法,變量等起名字
B 組成規(guī)則
由字符,下劃線_,美元符$組成
這里的字符采用的是unicode字符集,所以包括英文大小寫(xiě)字母,中文字符,數(shù)字字符等。
注意事項(xiàng)
不能以數(shù)字開(kāi)頭
不能是Java中的關(guān)鍵字
C : 命名原則:見(jiàn)名知意
a包
最好是域名倒過(guò)來(lái),要求所有的字母小寫(xiě)
b類(lèi)或者接口
如果是一個(gè)單詞首字母大寫(xiě)
如果是多個(gè)單詞每個(gè)單詞首字母大寫(xiě)(駝峰標(biāo)識(shí))
c方法或者變量
如果是一個(gè)單詞全部小寫(xiě)
如果是多個(gè)單詞,從第二個(gè)單詞首字母大寫(xiě)
d常量
如果是一個(gè)單詞,所有字母大寫(xiě)
如果是多個(gè)單詞,所有的單詞大寫(xiě),用下劃線區(qū)分每個(gè)單詞
3.4.2 案例代碼五
/* 標(biāo)識(shí)符:
就是給包,類(lèi),方法,變量起名字的符號(hào)。
組成規(guī)則:
A:unicode字符
數(shù)字字符,英文大小寫(xiě),漢字(不建議使用漢字)
B:下劃線_
C:美元符$
注意事項(xiàng)
A:不能以數(shù)字開(kāi)頭
B:不能是java中的關(guān)鍵字
常見(jiàn)命名規(guī)則:
A:基本要求
見(jiàn)名知意
B:常見(jiàn)的命名
a:包(其實(shí)就是文件夾,用于對(duì)類(lèi)進(jìn)行管理)
全部小寫(xiě),多級(jí)包用.隔開(kāi)
舉例:com,com.itheima
b:類(lèi)
一個(gè)單詞首字母大寫(xiě)
舉例:Student,Car
多個(gè)單詞每個(gè)單詞的首字母大寫(xiě)
舉例:HelloWorld
c:方法和變量
一個(gè)單詞首字母小寫(xiě)
舉例:age,show()
多個(gè)單詞從第二個(gè)單詞開(kāi)始每個(gè)單詞的首字母大寫(xiě)
舉例:maxAge,getAge()
*/
public class BiaoZhiFu {
publicstatic void main(String[] args) {
//定義變量
//數(shù)據(jù)類(lèi)型 變量名 = 初始化值;
inta = 10;
//正確
intb2 = 20;
//錯(cuò)誤
//int2b = 30;
//不能是java中的關(guān)鍵字
//錯(cuò)誤
//intpublic = 40;
}
}
3.5 定義變量
3.5.1 基本數(shù)據(jù)類(lèi)型變量的定義和使用
變量的定義格式:
數(shù)據(jù)類(lèi)型 變量名 = 初始化值;
基本數(shù)據(jù)類(lèi)型:
byte,short,int,long,float,double,char,boolean
注意:
整數(shù)默認(rèn)是int類(lèi)型,定義long類(lèi)型的數(shù)據(jù)時(shí),要在數(shù)據(jù)后面加L。
浮點(diǎn)數(shù)默認(rèn)是double類(lèi)型,定義float類(lèi)型的數(shù)據(jù)時(shí),要在數(shù)據(jù)后面加F。
3.5.2 案例代碼六
public class VariableDemo {
publicstatic void main(String[] args) {
//定義byte類(lèi)型的變量
byteb = 10;
System.out.println(10);
System.out.println(b);
//定義short類(lèi)型的變量
shorts = 100;
System.out.println(s);
//定義int類(lèi)型的變量
inti = 10000;
System.out.println(i);
//定義long類(lèi)型的變量
long l =1000000000000000L;
System.out.println(l);
//定義float類(lèi)型的變量
floatf = 12.34F;
System.out.println(f);
//定義double類(lèi)型的變量
doubled = 12.34;
System.out.println(d);
//定義char類(lèi)型的變量
charc = 'a';
System.out.println(c);
//定義boolean類(lèi)型的變量
booleanbb = false;
System.out.println(bb);
}
}
3.5.3 變量定義的注意事項(xiàng)
變量未賦值,不能直接使用
引出變量的第二種使用格式
變量只在它所屬的范圍內(nèi)有效。
變量在哪對(duì)大括號(hào)內(nèi),變量就屬于哪對(duì)大括號(hào)
一行上可以定義多個(gè)變量,但是不建議
3.5.4 案例代碼七
/*
變量定義注意事項(xiàng):
1:變量未賦值,不能直接使用
2:變量只在它所屬的范圍內(nèi)有效
變量屬于它所在的那對(duì)大括號(hào)
3:一行上可以定義多個(gè)變量,但是不建議
*/
public class VariableDemo2 {
public static voidmain(String[] args) {
//定義變量
int a = 10;
System.out.println(a);
int b;
b = 20; //變量在使用前賦值都是可以的
System.out.println(b);
{
int c = 100;
System.out.println(c);
}
//System.out.println(c);
/*
int aa,bb,cc;
aa = 10;
bb = 20;
cc = 30;
*/
/*
int aa = 10;
int bb = 20;
int cc = 30;
*/
int aa=10,bb=20,cc=30;
}
}
3.6 數(shù)據(jù)類(lèi)型轉(zhuǎn)換
3.6.1 隱式數(shù)據(jù)類(lèi)型轉(zhuǎn)換
取值范圍小的數(shù)據(jù)類(lèi)型與取值范圍大的數(shù)據(jù)類(lèi)型進(jìn)行運(yùn)算,會(huì)先將小的數(shù)據(jù)類(lèi)型提升為大的,再運(yùn)算
3.6.2 案例代碼八
/*
+:是一個(gè)運(yùn)算符,做加法運(yùn)算的。
我們?cè)谧鲞\(yùn)算的時(shí)候,一般要求參與運(yùn)算的數(shù)據(jù)類(lèi)型必須一致。
類(lèi)型轉(zhuǎn)換:
隱式轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換
隱式轉(zhuǎn)換
byte,short,char-- int -- long -- float -- double
*/
public class TypeCastDemo {
publicstatic void main(String[] args) {
//直接輸出了運(yùn)算的結(jié)果
System.out.println(3+ 4);
//定義兩個(gè)int類(lèi)型的變量
int a = 3;
intb = 4;
intc = a + b;
System.out.println(c);
//定義一個(gè)byte類(lèi)型,定義一個(gè)int類(lèi)型
bytebb = 2;
intcc = 5;
System.out.println(bb+ cc);
//我能不能不直接輸出,用一個(gè)變量接受呢?
//用變量接受,這個(gè)變量應(yīng)該有類(lèi)型
//可能損失精度
//bytedd = bb + cc;
intdd = bb + cc;
System.out.println(dd);
}
}
3.6.3 強(qiáng)制類(lèi)型數(shù)據(jù)轉(zhuǎn)換
強(qiáng)制轉(zhuǎn)換的格式
*b = (byte)(a + b);
強(qiáng)制轉(zhuǎn)換的注意事項(xiàng)
*如果超出了被賦值的數(shù)據(jù)類(lèi)型的取值范圍得到的結(jié)果會(huì)與你期望的結(jié)果不同
3.6.4 案例代碼九
/*
強(qiáng)制轉(zhuǎn)換:
目標(biāo)類(lèi)型 變量名 = (目標(biāo)類(lèi)型) (被轉(zhuǎn)換的數(shù)據(jù));
不建議強(qiáng)制轉(zhuǎn)換,因?yàn)闀?huì)有精度的損失。
*/
public class TypeCastDemo2 {
public static void main(String[] args) {
inta = 3;
byteb = 4;
intc = a + b;
//byted = a + b;
byted = (byte) (a + b);
}
}
本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
首發(fā):http://java.itheima.com/