NO.1 JVM虛擬機
JVM:虛擬機,Java一次編寫万栅,到處使用的關(guān)鍵
NO.2 JRE java運行環(huán)境
JRE:JVM + 類庫
NO.3 JDK java開發(fā)工具包
JDK: JRE + JAVA的開發(fā)工具
NO.4 JDK下載
NO.5 Java編程工具
基礎:notepad->Editplus->Eclipse
就業(yè): MyEclipse(主攻web開發(fā))和Eclipse都用
NO.6 Java版本
Java 標準版 :JSE 簡單基礎的開發(fā)烦粒, 但是java的主要技術(shù)都在這里面
Java 微縮版 : JME 針對特定開發(fā)分類的
Java 企業(yè)版 : JEE 對標準版的擴充,為企業(yè)開發(fā)解決問題
NO.7 第一個簡單程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“HelloWorld");
} }
Java 基礎語法
NO.8 關(guān)鍵字
? abstract:表明類或類中的方法是抽象的;
? boolean:基本數(shù)據(jù)類型之一,布爾類型;
? break:提前跳出一個塊;
? byte:基本數(shù)據(jù)類型之一,字節(jié)類型;
? case:在 switch 語句中,表明其中的一個分支;
? catch:用于處理例外情況,用來捕捉異常;
? char:基本數(shù)據(jù)類型之一,字符類型;
? class:類;
? continue:回到一個塊的開始處;
? default:用在 switch 語句中,表明一個默認的分支;
? do:用在"do while"循環(huán)結(jié)構(gòu)中;
? double:基本數(shù)據(jù)類型之一,雙精度浮點數(shù)類型;
? else:在條件語句中,表明當條件不成立時的分支;
? extends:用來表明一個類是另一個類的子類;
? final:用來表明一個類不能派生出子類,或類中的方法不能被覆蓋,或聲明一個變
量是常量;
? finally:用于處理異常情況,用來聲明一個肯定會被執(zhí)行到的塊;
? float:基本數(shù)據(jù)類型之一,單精度浮點數(shù)類型;
? for:一種循環(huán)結(jié)構(gòu)的引導詞;
? if:條件語句的引導詞;
? implements:表明一個類實現(xiàn)了給定的接口;
? import:表明要訪問指定的類或包;
? instanceof:用來測試一個對象是否是一個指定類的實例;
? int:基本數(shù)據(jù)類型之一,整數(shù)類型;
? interface:接口;
? long:基本數(shù)據(jù)類型之一,長整數(shù)類型;
? native:用來聲明一個方法是由與機器相關(guān)的語言(如 C/C++/FORTRAN 語言)實現(xiàn)的;
? new:用來申請新對象;
? package:包;
? private:一種訪問方式:私有模式;
? protected:一種訪問方式:保護模式;
? public:一種訪問方式:公共模式;
? return:從方法中返回值;
? short:基本數(shù)據(jù)類型之一,短整數(shù)類型;
? static:表明域或方法是靜態(tài)的,即該域或方法是屬于類的;
? strictfp:用來聲明 FP-strict(雙精度或單精度浮點數(shù))表達式,參見 IEEE 754 算
術(shù)規(guī)范;
? super:當前對象的父類對象的引用;
? switch:分支結(jié)構(gòu)的引導詞;
? synchronized:表明一段代碼的執(zhí)行需要同步;
? this:當前對象的引用;
? throw:拋出一個異常;
? throws:聲明方法中拋出的所有異常;
? transient:聲明不用序列化的域;
? try:嘗試一個可能拋出異常的程序塊
? void:表明方法不返回值;
? volatile:表明兩個或多個變量必須同步地發(fā)生變化;
? while:用在循環(huán)結(jié)構(gòu)中;
? assert:聲明斷言;
? enum:聲明枚舉類型;
NO.9 數(shù)據(jù)類型
Java 中的基本數(shù)據(jù)類型分為八個原始數(shù)據(jù)類型,原始類型可分為四種: (1):整數(shù)型:byte义黎、short、int泻云、long
(2):浮點型:float宠纯、double
(3):字符型:char
(4):邏輯型 :boolean
整數(shù)型:
byte:字節(jié)型
short:短整型
int: 整型
long:長整型
Java 里面的轉(zhuǎn)義字符 轉(zhuǎn)義字符是指,用一些普通字符的組合來代替一些特殊字符,由于其組合改變了原來字
符表示的含義,因此稱為“轉(zhuǎn)義”层释。 常見的轉(zhuǎn)義字符:
\n 回車(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 換行(\u000d)
\f 換頁(\u000c)
\' 單引號(\u0027)
\" 雙引號(\u0022)
\\ 反斜杠(\u005c)
NO.10 常量和變量
常量是值不可以改變的標識符贡羔。 對常量的定義規(guī)則:建議大家盡量全部大寫,
并用下劃線將詞分隔。 如:JAVASS_CLASS_NUMBER ,FILE_PATH
變量的定義規(guī)則
(1):遵從所有標識符的規(guī)則 (2):所有變量都可大小寫混用,但首字符應小寫 (3):盡量不要使用下劃線和$符號 (4):可以先聲明再賦值,如:
int i;
i=9; 也可以聲明的同時進行賦值:
int i=9;
Java 類和對象
NO.11 類的定義
一個完整的 Java 類通常由下面六個部分組成:
包定義語句 import 語句 類定義{
成員變量
構(gòu)造方法
成員方法
} 其中:只有類定義和“{}”是不可或缺的,其余部分都可以根據(jù)需要來定義。
NO.12 包的定義—OC中就沒有這個玩意
在 Java 中,包是類楣嘁、接口或其它包的集合,包主要用來將類組織起來成為組,從而對 類進行管理。
2.2:包能干什么 包對于下列工作非常有用:
(1):包允許您將包含類代碼的文件組織起來,易于查找和使用適當?shù)念悺?
(2):包不止是包含類和接口,還能夠包含其它包谆膳。形成層次的包空間勤婚。
(3):它有助于避免命名沖突馒胆。當您使用很多類時,確保類和方法名稱的唯一性是非常困難 的。
包能夠形成層次命名空間,縮小了名稱沖突的范圍,易于管理名稱睦尽。
NO.13 構(gòu)造方法
6. 1:什么是構(gòu)造方法
類有一個特殊的成員方法叫作構(gòu)造方法,它的作用是創(chuàng)建對象并初始化成員變量型雳。
在創(chuàng) 建對象時,會自動調(diào)用類的構(gòu)造方法纠俭。
6. 2:構(gòu)造方法定義規(guī)則
Java 中的構(gòu)造方法必須與該類具有相同的名字,并且沒有方法的返回類型(包括沒有 voi d)。
另外,構(gòu)造方法一般都應用 publ i c 類型來說明,這樣才能在程序任意的位置創(chuàng)建類 的實例--對象朴则。
6. 3:示例
下面是一個 Rect angl e 類的構(gòu)造方法,它帶有兩個參數(shù),分別表示矩形的長和寬:
publ i c cl ass Rect angl e{
public Rectangle(int w,int h) {
wi dt h=w;
hei ght =h; }
}
6. 4:說明
每個類至少有一個構(gòu)造方法乌妒。如果不寫一個構(gòu)造方法,Java 編程語言將提供一個默認的,
該構(gòu)造方法沒有參數(shù),而且方法體為空外邓。
注意:如果一個類中已經(jīng)定義了構(gòu)造方法則系統(tǒng)不再提供默認的構(gòu)造方法损话。
NO.14 屬性
8.1:屬性是什么
簡單點說,屬性就是對象所具有的靜態(tài)屬性丧枪。 8.2:定義規(guī)則
Java 類中屬性的聲明采用如下格式:
訪問修飾符 修飾符 類型 屬性名稱=初始值;
訪問修飾符:可以使用四種不同的訪問修飾符中的一種,包括 publ i c( 公共的) 、 pr ot ect ed(受保護的),無修飾符和 pr i vat e(私有的)豪诲。
publ i c 訪問修飾符表示屬性可以 從任何其它代碼調(diào)用顶捷。pr i vat e 表示屬性只可以由該類中的其它方法來調(diào)用挂绰。
pr ot ect ed 將 在以后的課程中討論屎篱。
修飾符:是對屬性特性的描述,例如后面會學習到的:st at i c服赎、f i nal 等等。
類型:屬性的數(shù)據(jù)類型,可以是任意的類型交播。
屬性名稱:任何合法標識符 初始值:賦值給屬性的初始值重虑。如果不設置,那么會自動進行初始化,基本類型使用缺
省值,對象類型自動初始化為 nul l 。
8.3:說明
屬性有時候也被稱為成員變量秦士、實例變量缺厉、域,它們經(jīng)常被互換使用隧土。
NO.15 方法
9. 1:方法是什么
方法就是對象所具有的動態(tài)功能提针。
9. 2:定義規(guī)則
Java 類中方法的聲明采用以下格式:
訪問修飾符 修飾符 返回值類型 方法名稱 (參數(shù)列表)
throws 異常列表 {方法體}
訪問修飾符:可以使用四種不同的訪問修飾符中的一種,包括 publ i c( 公共的) 、 pr ot ect ed(受保護的),無修飾符和 pr i vat e(私有的)曹傀。publ i c 訪問修飾符表示方法可以 從任何其它代碼調(diào)用辐脖。pr i vat e 表示方法只可以由該類中的其它方法來調(diào)用。pr ot ect ed 將 在以后的課程中討論皆愉。
修飾符:是對方法特性的描述,例如后面會學習到的:st at i c嗜价、f i nal 、abst r act 幕庐、 synchr oni zed 等等久锥。
返回值類型:表示方法返回值的類型。如果方法不返回任何值,它必須聲明為 voi d( 空) 异剥。
Java 技術(shù)對返回值是很嚴格的,例如,如果聲明某方法返回一個 i nt 值,那么方法必須從 所有可能的返回路徑中返回一個 i nt 值(只能在等待返回該 i nt 值的上下文中被調(diào)用瑟由。)
方法名稱:可以是任何合法標識符,并帶有用已經(jīng)使用的名稱為基礎的某些限制條件。
參數(shù)列表:允許將參數(shù)值傳遞到方法中届吁。列舉的元素由逗號分開,而每一個元素包含一 個類型和一個標識符错妖。在下面的方法中只有一個形式參數(shù),用 i nt 類型和標識符 days 來聲 明:public void test(int days){}
throws 異常列表:子句導致一個運行時錯誤(異常)被報告到調(diào)用的方法中,以便以 合適的方式處理它。異常在后面的課程中介紹疚沐。
花括號內(nèi)是方法體,即方法的具體語句序列暂氯。
9. 3:示例 比如現(xiàn)在有一個“車”的類——Car,“車”具有一些基本的屬性,比如四個輪子,一個
方向盤,車的品牌等等。當然,車也具有自己的功能,也就是方法,比如車能夠“開動”— —run亮蛔。要想車子能夠開動,需要給車子添加汽油,也就是說,需要為 run 方法傳遞一些參 數(shù)“油”進去痴施。車子跑起來過后,我們需要知道當前車輛運行的速度,就需要 run 方法具有 返回值“當前的速度”。
package cn.javass.javatest; public class Car {// 車這個類
private String make;// 一個車的品牌 private int tyre;// 一個車具有輪胎的個數(shù) private int wheel;// 一個車具有方向盤的個數(shù)
public Car() { // 初始化屬性
make = "BMW";// 車的品牌是寶馬 tyre = 4;// 一個車具有4個輪胎 wheel = 1;// 一個車具有一個方向盤
}
/**
* 車這個對象所具有的功能,能夠開動 * @param oil 為車輛加汽油的數(shù)量 * @return 車輛當前運行的速度
*/
public double run(int oil) { // 進行具體的功能處理 return 200.0;
} }
NO.16 為什么有棧內(nèi)存和堆內(nèi)存之分
#棧內(nèi)存:
當一個方法執(zhí)行時究流,每個方法都會建立自己的內(nèi)存棧辣吃,在這個方法內(nèi)定義的變量將會逐個放入這塊棧內(nèi)存里。
隨著方法的執(zhí)行結(jié)束芬探,這個方法的內(nèi)存棧也將自然銷毀神得。 因此,所有在方法中定義的局部變量都是放在棧內(nèi)存中的偷仿。
#堆內(nèi)存
在程序中創(chuàng)建一個對象時哩簿,這個對象將被保存到運行時數(shù)據(jù)區(qū)中宵蕉,以便反復利用(因為對象的創(chuàng)建成本通常較大),這個運行時數(shù)據(jù)區(qū)就是堆內(nèi)存节榜。
堆內(nèi)存中的對象不會隨方法的結(jié)束而銷毀羡玛,即使方法結(jié)束后,這個對象還可能被另一個引用變量所引用(在方法的參數(shù)傳遞時很常見)
則這個對象依然不會被銷毀宗苍。只有當一個對象沒有任何引用變量引用它時稼稿,系統(tǒng)的垃圾回收器才會在合適的時候回收它。
NO.17 static的作用
1.static 是一個特殊的關(guān)鍵字讳窟,它可用于修飾方法让歼,成員變量等成員。
2.static 修飾的成員表明它屬于這個類本身丽啡,而不屬于該類的單個實例是越,因為通常把static修飾的成員變量和方法也稱為類變量,類方法碌上。
3.不使用static修飾的普通方法倚评,成員變量則屬于該類的單個實例,而不屬于該類馏予。因為通常把不使用static修飾的成員變量和方法也稱為實例變量天梧,實例方法。
4.static 的英文直譯就是靜態(tài)的意思霞丧,因此用static修飾的成員變量和方法也叫做靜態(tài)變量和靜態(tài)方法呢岗。
//舉例:
//舉例說明類成員變量和實例成員變量
public class JavaExample {
public static void main(String[] args){
//訪問區(qū)別,一個不用創(chuàng)建實例對象直接用類訪問蛹尝,一個必須要創(chuàng)建實例來訪問
Example.number = 8;
Example test = new Example();
test.temp = 10;
System.out.println( ""+Example.number+"區(qū)別"+test.temp);
}
public static class Example{
static int number;
int temp;
}
}
#注意用static修飾的成員變量后豫,類和實例對象都可以調(diào)用,反過來是不行的
NO.18 方法傳遞機制
#Java中方法的參數(shù)傳遞只有值傳遞突那,也就是方法外部傳進來的參數(shù)是不會隨著傳入方法內(nèi)部的操作而發(fā)生改變的
舉例:
public class JavaExample {
public static void main(String[] args){
int x = 9;
int y = 7;
System.out.println(Integer.toString(x));
System.out.println(Integer.toString(y));
Example.swap(x,y);
}
public static class Example{
public static void swap(int a , int b ){
int temp = a;
a = b;
b = temp;
System.out.printf("交換后a= "+a+",b = "+b);
}
}
NO.18 API
就是java提供給我們使用的類挫酿,這些類將底層的實現(xiàn)封裝了起來,我們不需要關(guān)心這些類如何實現(xiàn)的愕难,只需要學習這些類如何使用