《Java編程思想》筆記2:對象,基礎語法

本篇關注:對象(第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)存空間。

基本類型
基本數(shù)據(jù)類型

高精度的類:運算速度較慢
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字符串


References:

呂龍寶的《Java編程思想》學習筆記
實參和形參

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容