第二章 一切都是對(duì)象
2.1用引用操縱對(duì)象
String s;
創(chuàng)建的是引用,并不是對(duì)象
String s = "asdf";
JAVA 允許字符串用帶引用的文本初始化
2.2 必須由你創(chuàng)建所有對(duì)象
eg. String s = new String("asdf");
2.2.1 存儲(chǔ)到什么地方
- 寄存器
- 最快的存儲(chǔ)區(qū)
- 堆棧
- 堆棧指針
- 對(duì)象引用存儲(chǔ)在其中
- 堆
- 用于存放所有的 JAVA 對(duì)象
- 常量存儲(chǔ)
- 常量值通常直接存放在程序代碼內(nèi)
- 非RAM存儲(chǔ)
2.2.2 基本類(lèi)型
基本類(lèi)型 | 二進(jìn)制位數(shù) | 包裝器類(lèi)型 | 最小值 | 最大值 |
---|---|---|---|---|
boolean | Boolean | |||
char | 16 | Character | 0 | 65535 |
byte | 8 | Byte | -128 | 127 |
short | 16 | Short | -2^15 | 2^15-1 |
int | 32 | Integer | -2^31 | 2^31-1 |
long | 64 | Long | -2^63 | 2^63-1 |
float | 32 | Float | IEEE754 | IEEE754 |
double | 64 | Double | IEEE754 | IEEE754 |
void | Void |
- 在堆中創(chuàng)建一個(gè)非基本對(duì)象
char c = 'x' ;
Character ch = new Character(c) ;
或者
Character ch = 'x' ;
2.3 永遠(yuǎn)不需要銷(xiāo)毀的對(duì)象
2.3.2 作用域 scope
{
int x=12;
{
int x=4;//illegal
}
}
- 在C/C++是合法的,但在 JAVA 中是不合法的;C/C++ 里把一個(gè)較大的作用域“隱藏”起來(lái),在 JAVA 中是不允許的瞻颂。
2.3.2 對(duì)象作用域
- 當(dāng)用new創(chuàng)建一個(gè) JAVA 對(duì)象是,它可以存活于作用域之外。
{
String s = new String("ssds");
}
引用s在作用域結(jié)束就消失眨猎,而s指向的String對(duì)象仍繼續(xù)占用內(nèi)存空間。
2.4 創(chuàng)建新的數(shù)據(jù)類(lèi)型
- 當(dāng)變量作為類(lèi)的成員變量時(shí)强经,即使沒(méi)有進(jìn)行初始化睡陪,JAVA 會(huì)給定其默認(rèn)值。
基本類(lèi)型 | 默認(rèn)值 |
---|---|
boolean | false |
char | '\u0000'(null) |
byte | 0(byte) |
short | 0(short) |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
2.5 方法、參數(shù)和返回值
2.6 構(gòu)建一個(gè)程序
2.6.1名字可見(jiàn)性
- 域名反轉(zhuǎn)兰迫,句點(diǎn)代表子目錄的劃分
- 假如我的域名為my.net
- 我的工具類(lèi)庫(kù)名可以為net.my.car.accelerator
- 整個(gè)包名都為小寫(xiě)
2.6.3 static 關(guān)鍵字
靜態(tài)方法只能操縱靜態(tài)數(shù)據(jù)
class StaticTest{
static int i = 47;
}
- 引用static變量/方法可以通過(guò)對(duì)象去定位信殊,也可以通過(guò)其類(lèi)名去直接引用。
- eg. 在main里面
StaticTest.i++;
2.7 你的第一個(gè) JAVA 程序
2.8注釋和嵌入式文檔
/**
*
*@author author-information
*@version 1.0
*/
2.9 編碼風(fēng)格
類(lèi)名首字母大寫(xiě)汁果,如果類(lèi)名由幾個(gè)單詞構(gòu)成(不用下劃線(xiàn)的話(huà))涡拘,每個(gè)單詞的首字母大寫(xiě)。