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