本篇關注:對象(第1,2章),基礎語法(第3,4章)
對象
面向?qū)ο蟪绦蛟O計(Object-oriented Programming,OOP)
每個對象都有內(nèi)部數(shù)據(jù)(狀態(tài)),方法(產(chǎn)生行為),標識(內(nèi)存中唯一地址,或其他)
每個對象都是某個類class的一個實例 instance
Light lt = new Light();
lt.on();
類名:Light。
創(chuàng)建Light新對象:定義一個引用(reference)lt,用new指向一個新對象。
接口 interface:定義了對某一對象能發(fā)出的請求(調(diào)用這個類中的方法)
此例子的接口里有on(), off()等方法。
實現(xiàn) implementation:由滿足請求的代碼和隱藏數(shù)據(jù)構成
String s = new String("abc");
創(chuàng)建一個引用 reference的同時最好就初始化。
垃圾回收器:監(jiān)視用new創(chuàng)建的所有對象,一旦不再需要,它們就會自行消失,釋放內(nèi)存空間。
基本類型

高精度的類:運算速度較慢
BigInteger:支持任意精度的整數(shù)。
BigDecimal:支持任意精度的定點數(shù)。
自動裝箱:自動地將一個原始數(shù)據(jù)類型轉(zhuǎn)換為一個封裝類型
自動拆箱:自動地將一個封裝類型數(shù)據(jù)轉(zhuǎn)換為原始數(shù)據(jù)類型
變量
public class Variable{
static int allClicks = 0; // 靜態(tài)變量
String str="hello world"; // 成員變量
public void method(){
int i =0; // 局部變量
}
}
- 成員變量:類中方法外。有默認初始化值。
- 靜態(tài)變量:類變量,全局變量。可直接用類名調(diào)用。被分配了單一的存儲空間,同樣的數(shù)據(jù)只有一份。
- 實例變量
- 局部變量:方法中定義的變量。必須初始化。
數(shù)據(jù)存儲位置
Registers 寄存器:
位于處理器內(nèi)部,是最快的存儲區(qū)。由編譯器根據(jù)需求分配,Java程序無法控制它。Stack 棧,堆棧 :
位于RAM。堆棧指針向下移動(分配新內(nèi)存),向上移動(釋放內(nèi)存)。
存放局部變量和對象引用。
數(shù)據(jù)可共享。比如int a =3; int b = 3; 引用的是同一個3。Heap 堆:位于RAM。存放new出來的類的對象(包括其成員變量)和數(shù)組。數(shù)據(jù)不共享。
常量池:存放在編譯期被確定,并被保存在已編譯的.class文件中的一些數(shù)據(jù);存放字符串常量,其他基本數(shù)據(jù)類型的常量,類和接口的全限定名,字段名稱和描述符,方法名稱和描述符。
JDK1.6常量池放在方法區(qū),JDK1.7常量池放在堆內(nèi)存,JDK1.8放在元空間里面,和堆相獨立。Non-RAM storage 非RAM存儲:在程序外。比如流對象,持久化對象。
類
return:已經(jīng)做完,離開方法。方法返回值需要放在return后面。
void方法不需要返回值,return僅用作離開。
域 field
域是類中的數(shù)據(jù)成員。通常是非static。
方法 method
static方法內(nèi)部不能調(diào)用非static方法,反之可以。
參數(shù)
- 實參 argument:實際參數(shù),傳遞給方法的參數(shù)??梢允浅A?、變量、表達式、函數(shù)等,必須有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。
- 形參 parameter:形式參數(shù),不是實際存在變量,又稱虛擬變量。是在定義方法的時候使用的參數(shù)。目的是用來接收調(diào)用該方法時傳入的參數(shù)。在調(diào)用方法時,實參將賦值給形參。
形參的本質(zhì)是變量名,不占內(nèi)存空間。實參的本質(zhì)是一個變量,占用內(nèi)存空間。
環(huán)境
JDK(Java Development Kit),Java開發(fā)所需的工具包。
JRE(Java Runtime Environment),Java運行環(huán)境。
編碼風格
駝峰風格。不要用下劃線。
類名首字母大寫。方法、變量、引用首字母小寫。
操作符
移位操作符
左移操作符(<<):按照右側(cè)指定的位數(shù)將操作數(shù)向左移動,在低位補0
“有符號”右移操作符(>>):按照右側(cè)指定的位數(shù)將操作數(shù)向右移動,若操作數(shù)的符號為正,則在高位插0;若操作數(shù)的符號為負,則在高位插入1
“無符號”右移操作符(>>>):按照右側(cè)指定的位數(shù)將操作數(shù)向右移動,無論操作數(shù)的正負,都在高位插入0
自動遞增(++)和遞減(--)
i++:先使用再加1;++i:先加1再使用
類型轉(zhuǎn)換
類型自動轉(zhuǎn)換:低級數(shù)據(jù)類型自動轉(zhuǎn)換為高級數(shù)據(jù)類型
強制類型轉(zhuǎn)換:高級數(shù)據(jù)類型轉(zhuǎn)換為低級數(shù)據(jù)類型
控制執(zhí)行流程
while比do-while更常用。do-while至少會先執(zhí)行一次。
foreach:用于數(shù)組和容器,還有任何Iterable對象。
break:強制結(jié)束整個循環(huán),不再執(zhí)行剩余代碼。
continue:結(jié)束本次循環(huán),回到循環(huán)起始處,開始下一次循環(huán)。
return:退出方法,或從方法返回一個值。
無窮循環(huán):while(true) 和 for(;;) 完全等價。
Switch 多項選擇
switch (interal-selector) {
case interal-value1 : statement1; break;
case interal-value2 : statement1; break;
case interal-value3 : statement1; break;
//...
default: break;
}
interal-selector 整數(shù)選擇因子,可以是:
char, byte, short, int 以及包裝類 Character, Byte, Short, Integer
enmu枚舉
String字符串