day01 - java基礎(chǔ)語(yǔ)法
1. Java概述
1.1 Java語(yǔ)言發(fā)展史(了解)
語(yǔ)言:人與人交流溝通的表達(dá)方式
計(jì)算機(jī)語(yǔ)言:人與計(jì)算機(jī)之間進(jìn)行信息交流溝通的一種特殊語(yǔ)言
Java語(yǔ)言是美國(guó)Sun公司(Stanford University Network)在1995年推出的計(jì)算機(jī)語(yǔ)言
Java之父:詹姆斯·高斯林(James Gosling)
2009年,Sun公司被甲骨文公司收購(gòu),所以我們現(xiàn)在訪問oracle官網(wǎng)即可:https://www.oracle.com
當(dāng)前,我們課程使用的JDK版本:11.0
1.2 Java語(yǔ)言跨平臺(tái)原理(理解)
Java程序并非是直接運(yùn)行的,Java編譯器將Java源程序編譯成與平臺(tái)無(wú)關(guān)的字節(jié)碼文件(class文件),然后由Java虛擬機(jī)(JVM)對(duì)字節(jié)碼文件解釋執(zhí)行。所以在不同的操作系統(tǒng)下,只需安裝不同的Java虛擬機(jī)即可實(shí)現(xiàn)java程序的跨平臺(tái)。
1.3 JRE和JDK(記憶)
JVM(Java Virtual Machine),Java虛擬機(jī)
JRE(Java Runtime Environment),Java運(yùn)行環(huán)境,包含了JVM和Java的核心類庫(kù)(Java API)
JDK(Java Development Kit)稱為Java開發(fā)工具,包含了JRE和開發(fā)工具
總結(jié):我們只需安裝JDK即可,它包含了java的運(yùn)行環(huán)境和虛擬機(jī)。
1.4 JDK的下載和安裝(應(yīng)用)
1.4.1 下載
通過官方網(wǎng)站獲取JDK
http://www.oracle.com
注意:針對(duì)不同的操作系統(tǒng),需要下載對(duì)應(yīng)版本的JDK。
具體下載步驟請(qǐng)參見《JDK下載及安裝說明文檔》
1.4.2 安裝
傻瓜式安裝,下一步即可。但默認(rèn)的安裝路徑是在C:\Program Files下,為方便統(tǒng)一管理建議修改安裝路徑,將與開發(fā)相關(guān)的軟件都安裝到一個(gè)目錄下,例如:E:\develop。
注意:安裝路徑不要包含中文或者空格等特殊字符(使用純英文目錄)。
具體安裝步驟請(qǐng)參見《JDK下載及安裝說明文檔》
1.4.3 JDK的安裝目錄介紹
目錄名稱說明bin該路徑下存放了JDK的各種工具命令。javac和java就放在這個(gè)目錄。conf該路徑下存放了JDK的相關(guān)配置文件。include該路徑下存放了一些平臺(tái)特定的頭文件。jmods該路徑下存放了JDK的各種模塊。legal該路徑下存放了JDK各模塊的授權(quán)文檔。lib該路徑下存放了JDK工具的一些補(bǔ)充JAR包。
2. 第一個(gè)演示程序
2.1 常用DOS命令(應(yīng)用)
在接觸集成開發(fā)環(huán)境之前,我們需要使用命令行窗口對(duì)java程序進(jìn)行編譯和運(yùn)行,所以需要知道一些常用DOS命令。
1、打開命令行窗口的方式:win + r打開運(yùn)行窗口,輸入cmd,回車。
2、常用命令及其作用
操作說明盤符名稱:盤符切換。E:回車,表示切換到E盤。dir查看當(dāng)前路徑下的內(nèi)容。cd 目錄進(jìn)入單級(jí)目錄。cd itheimacd ..回退到上一級(jí)目錄。cd 目錄1\目錄2...進(jìn)入多級(jí)目錄。cd itheima\JavaSEcd 回退到盤符目錄。cls清屏。exit退出命令提示符窗口。
2.2 Path環(huán)境變量的配置(應(yīng)用)
2.2.1 為什么配置環(huán)境變量
開發(fā)Java程序,需要使用JDK提供的開發(fā)工具(比如javac.exe、java.exe等命令),而這些工具在JDK的安裝目錄的bin目錄下,如果不配置環(huán)境變量,那么這些命令只可以在該目錄下執(zhí)行。我們不可能把所有的java文件都放到JDK的bin目錄下,所以配置環(huán)境變量的作用就是可以使bin目錄下的java相關(guān)命令可以在任意目錄下使用。
2.2.2 配置環(huán)境變量步驟
具體配置步驟請(qǐng)參見《Java環(huán)境變量配置說明》文檔。 ? ?
2.3 HelloWorld案例(應(yīng)用)
HelloWorld案例是指在計(jì)算機(jī)屏幕上輸出“HelloWorld”這行文字。各種計(jì)算機(jī)語(yǔ)言都習(xí)慣使用該案例作為第一個(gè)演示案例。
2.3.1 Java程序開發(fā)運(yùn)行流程
開發(fā)Java程序,需要三個(gè)步驟:編寫程序,編譯程序,運(yùn)行程序。
2.3.2 HelloWorld案例的編寫
1、新建文本文檔文件,修改名稱為HelloWorld.java。
2、用記事本打開HelloWorld.java文件,輸寫程序內(nèi)容。
public class HelloWorld { ? ?public static void main(String[] args) { ? ? ? ?System.out.println("HelloWorld"); ? ?}}
2.3.3 HelloWorld案例的編譯和運(yùn)行
存文件,打開命令行窗口,將目錄切換至java文件所在目錄,編譯java文件生成class文件,運(yùn)行class文件。
編譯:javac 文件名.java
范例:javac HelloWorld.java
執(zhí)行:java 類名
范例:java HelloWorld
2.4 HelloWorld案例常見問題(理解)
2.4.1 BUG
在電腦系統(tǒng)或程序中,隱藏著的一些未被發(fā)現(xiàn)的缺陷或問題統(tǒng)稱為bug(漏洞)。
2.4.2 BUG的解決
1、具備識(shí)別BUG的能力:多看
2、具備分析BUG的能力:多思考,多查資料
3、具備解決BUG的能力:多嘗試,多總結(jié)
2.4.3 HelloWorld案例常見問題
1、非法字符問題。Java中的符號(hào)都是英文格式的。
2、大小寫問題。Java語(yǔ)言對(duì)大小寫敏感(區(qū)分大小寫)。
3、在系統(tǒng)中顯示文件的擴(kuò)展名,避免出現(xiàn)HelloWorld.java.txt文件。
4、編譯命令后的java文件名需要帶文件后綴.java
5、運(yùn)行命令后的class文件名(類名)不帶文件后綴.class
...
2.5 Notepad++軟件的安裝和使用(應(yīng)用)
2.5.1 什么要使用Notepad++軟件
Notepad++功能比windows中的自帶記事本功能強(qiáng)大,除了可以用來制作一般的純文字說明文件,也十分適合編寫計(jì)算機(jī)程序代碼。Notepad++有行號(hào),能夠快速定位問題位置,還有語(yǔ)法高亮度顯示、代碼折疊等功能。而且它是免費(fèi)的。
2.5.2 Notepad++軟件安裝
安裝:傻瓜式安裝,一直下一步即可。建議也安裝到統(tǒng)一的開發(fā)軟件目錄下,比如E:\develop。
具體安裝步驟請(qǐng)參見《Nodepad++軟件安裝及配置說明》文檔。
2.5.3Notepad++軟件配置
安裝完畢之后,為了使用方便,做一個(gè)簡(jiǎn)單的配置:修改默認(rèn)語(yǔ)言和編碼。
具體配置的說明請(qǐng)參見《Nodepad++軟件安裝及配置說明》文檔。
3. java基礎(chǔ)語(yǔ)法
3.1 注釋(理解)
注釋是對(duì)代碼的解釋和說明文字,可以提高程序的可讀性,因此在程序中添加必要的注釋文字十分重要。Java中的注釋分為三種:
單行注釋。單行注釋的格式是使用//,從//開始至本行結(jié)尾的文字將作為注釋文字。
// 這是單行注釋文字
多行注釋。多行注釋的格式是使用/* 和 */將一段較長(zhǎng)的注釋括起來。
/*這是多行注釋文字這是多行注釋文字這是多行注釋文字*/注意:多行注釋不能嵌套使用。
文檔注釋。文檔注釋以/**
開始,以*/
結(jié)束。(以后講)
3.2 關(guān)鍵字(理解)
關(guān)鍵字是指被java語(yǔ)言賦予了特殊含義的單詞。
關(guān)鍵字的特點(diǎn):
關(guān)鍵字的字母全部小寫。
常用的代碼編輯器對(duì)關(guān)鍵字都有高亮顯示,比如現(xiàn)在我們能看到的public、class、static等。
3.3 常量(應(yīng)用)
常量:在程序運(yùn)行過程中,其值不可以發(fā)生改變的量。
Java中的常量分類:
字符串常量 ?用雙引號(hào)括起來的多個(gè)字符(可以包含0個(gè)、一個(gè)或多個(gè)),例如"a"、"abc"、"中國(guó)"等
整數(shù)常量 ?整數(shù),例如:-10、0、88等
小數(shù)常量 ?小數(shù),例如:-5.5、1.0、88.88等
字符常量 ?用單引號(hào)括起來的一個(gè)字符,例如:'a'、'5'、'B'、'中'等
布爾常量 ?布爾值,表示真假,只有兩個(gè)值true和false
空常量 ?一個(gè)特殊的值,空值,值為null
除空常量外,其他常量均可使用輸出語(yǔ)句直接輸出。
public class Demo { ? ?
public static void main(String[] args) { ? ? ? ?
System.out.println(10); // 輸出一個(gè)整數(shù) ? ? ? ?
System.out.println(5.5); // 輸出一個(gè)小數(shù) ? ? ? ?
System.out.println('a'); // 輸出一個(gè)字符 ? ? ? ?
System.out.println(true); // 輸出boolean值true ? ? ? ?
System.out.println("歡迎來到黑馬程序員"); // 輸出字符串 ??
?}
}
3.4 數(shù)據(jù)類型(記憶、應(yīng)用)
3.4.1 計(jì)算機(jī)存儲(chǔ)單元
我們知道計(jì)算機(jī)是可以用來存儲(chǔ)數(shù)據(jù)的,但是無(wú)論是內(nèi)存還是硬盤,計(jì)算機(jī)存儲(chǔ)設(shè)備的最小信息單元叫“位(bit)”,我們又稱之為“比特位”,通常用小寫的字母”b”表示。而計(jì)算機(jī)中最基本的存儲(chǔ)單元叫“字節(jié)(byte)”,
通常用大寫字母”B”表示,字節(jié)是由連續(xù)的8個(gè)位組成。
除了字節(jié)外還有一些常用的存儲(chǔ)單位,其換算單位如下:
1B(字節(jié)) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
3.4.2 Java中的數(shù)據(jù)類型
Java是一個(gè)強(qiáng)類型語(yǔ)言,Java中的數(shù)據(jù)必須明確數(shù)據(jù)類型。在Java中的數(shù)據(jù)類型包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型兩種。
Java中的基本數(shù)據(jù)類型:
數(shù)據(jù)類型關(guān)鍵字內(nèi)存占用取值范圍整數(shù)byte1負(fù)的2的7次方 ~ 2的7次方-1(-128~127)short2負(fù)的2的15次方 ~ 2的15次方-1(-32768~32767)int4負(fù)的2的31次方 ~ 2的31次方-1long8負(fù)的2的63次方 ~ 2的63次方-1浮點(diǎn)數(shù)float41.401298e-45 ~ 3.402823e+38double84.9000000e-324 ~ 1.797693e+308字符char20-65535布爾boolean1true,false
說明:
e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負(fù)45次方。
在java中整數(shù)默認(rèn)是int類型,浮點(diǎn)數(shù)默認(rèn)是double類型。
3.5 變量(應(yīng)用)
3.5.1 變量的定義
變量:在程序運(yùn)行過程中,其值可以發(fā)生改變的量。
從本質(zhì)上講,變量是內(nèi)存中的一小塊區(qū)域,其值可以在一定范圍內(nèi)變化。
變量的定義格式:
數(shù)據(jù)類型 變量名 = 初始化值; // 聲明變量并賦值int age = 18;System.out.println(age);
或者
// 先聲明,后賦值(使用前賦值即可)數(shù)據(jù)類型 變量名;變量名 = 初始化值;double money;money = 55.5;System.out.println(money);
還可以在同一行定義多個(gè)同一種數(shù)據(jù)類型的變量,中間使用逗號(hào)隔開。但不建議使用這種方式,降低程序的可讀性。
int a = 10, b = 20; // 定義int類型的變量a和b,中間使用逗號(hào)隔開System.out.println(a);System.out.println(b);int c,d; // 聲明int類型的變量c和d,中間使用逗號(hào)隔開c = 30;d = 40;System.out.println(c);System.out.println(d);
變量的使用:通過變量名訪問即可。
3.5.2 使用變量時(shí)的注意事項(xiàng)
在同一對(duì)花括號(hào)中,變量名不能重復(fù)。
變量在使用之前,必須初始化(賦值)。
定義long類型的變量時(shí),需要在整數(shù)的后面加L(大小寫均可,建議大寫)。因?yàn)檎麛?shù)默認(rèn)是int類型,整數(shù)太大可能超出int范圍。
定義float類型的變量時(shí),需要在小數(shù)的后面加F(大小寫均可,建議大寫)。因?yàn)楦↑c(diǎn)數(shù)的默認(rèn)類型是double, double的取值范圍是大于float的,類型不兼容。
3.6 標(biāo)識(shí)符(記憶、理解)
標(biāo)識(shí)符是用戶編程時(shí)使用的名字,用于給類、方法、變量、常量等命名。
Java中標(biāo)識(shí)符的組成規(guī)則:
由字母、數(shù)字、下劃線“_”、美元符號(hào)“$”組成,第一個(gè)字符不能是數(shù)字。
不能使用java中的關(guān)鍵字作為標(biāo)識(shí)符。
標(biāo)識(shí)符對(duì)大小寫敏感(區(qū)分大小寫)。
Java中標(biāo)識(shí)符的命名約定:
小駝峰式命名:變量名、方法名
首字母小寫,從第二個(gè)單詞開始每個(gè)單詞的首字母大寫。
大駝峰式命名:類名
每個(gè)單詞的首字母都大寫。
另外,標(biāo)識(shí)符的命名最好可以做到見名知意
例如:username、studentNumber等。
3.7 類型轉(zhuǎn)換(理解)
在Java中,一些數(shù)據(jù)類型之間是可以相互轉(zhuǎn)換的。分為兩種情況:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。
自動(dòng)類型轉(zhuǎn)換:
把一個(gè)表示數(shù)據(jù)范圍小的數(shù)值或者變量賦值給另一個(gè)表示數(shù)據(jù)范圍大的變量。這種轉(zhuǎn)換方式是自動(dòng)的,直接書寫即可。例如:
double num = 10; // 將int類型的10直接賦值給double類型System.out.println(num); // 輸出10.0
強(qiáng)制類型轉(zhuǎn)換:
把一個(gè)表示數(shù)據(jù)范圍大的數(shù)值或者變量賦值給另一個(gè)表示數(shù)據(jù)范圍小的變量。
強(qiáng)制類型轉(zhuǎn)換格式:目標(biāo)數(shù)據(jù)類型 變量名 = (目標(biāo)數(shù)據(jù)類型)值或者變量;
例如:
double num1 = 5.5;int num2 = (int) num1; // 將double類型的num1強(qiáng)制轉(zhuǎn)換為int類型System.out.println(num2); // 輸出5(小數(shù)位直接舍棄)
說明:
char類型的數(shù)據(jù)轉(zhuǎn)換為int類型是按照碼表中對(duì)應(yīng)的int值進(jìn)行計(jì)算的。比如在ASCII碼表中,'a'對(duì)應(yīng)97。
int a = 'a';System.out.println(a); // 將輸出97
整數(shù)默認(rèn)是int類型,byte、short和char類型數(shù)據(jù)參與運(yùn)算均會(huì)自動(dòng)轉(zhuǎn)換為int類型。
byte b1 = 10;byte b2 = 20;byte b3 = b1 + b2; // 第三行代碼會(huì)報(bào)錯(cuò),b1和b2會(huì)自動(dòng)轉(zhuǎn)換為int類型,計(jì)算結(jié)果為int,int賦值給byte需要強(qiáng)制類型轉(zhuǎn)換。// 修改為:int num = b1 + b2;// 或者:byte b3 = (byte) (b1 + b2);
boolean類型不能與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換。