第二章 一切都是對(duì)象(Java對(duì)象)

如果我們說另一種不同的語(yǔ)言鉴嗤,我們會(huì)發(fā)現(xiàn)另一個(gè)不同的世界

2.1 用引用來操作對(duì)象

每個(gè)語(yǔ)言都有自己操縱內(nèi)存元素的方式?

在c c++中程序猿使用指針來來操作內(nèi)存中的對(duì)象 ?

而java中使用引用來操作對(duì)象 ?但是引用并不是對(duì)象 而是指向?qū)ο?

對(duì)象是電視 那么 引用就是遙控器 ?我們可以通過遙控器來控制電視 同樣java中我們可以通過引用來控制對(duì)象

電視 和 遙控器 都可以獨(dú)立存在 ?所以你擁有一個(gè)引用并不代表 要有一個(gè)對(duì)象與之管理

例如 String ?A 斩启; 我們只創(chuàng)建了一個(gè)引用 ?由于他沒有對(duì)象無(wú)法通過 向A發(fā)送消息執(zhí)任何行為 如果我們這么做就會(huì)收到錯(cuò)誤提示

2.2 必須由你來創(chuàng)建對(duì)象

java 中使用 new 字來創(chuàng)建新對(duì)象

String a = new String(“sdfsdf”); ?//這種狀態(tài)下引用和對(duì)象進(jìn)行了關(guān)聯(lián) ?事實(shí)上 java 創(chuàng)建了引用就應(yīng)該讓引用于對(duì)象關(guān)聯(lián)醉锅,即初始化引用

對(duì)象在內(nèi)存中的存儲(chǔ)

1.寄存器:最快的存儲(chǔ)區(qū)域 位于CPU內(nèi)部兔簇,空間有限,按照需求進(jìn)行存儲(chǔ)硬耍,我們無(wú)法控制男韧,在程序運(yùn)行時(shí)無(wú)法感知到它的存在。

2.堆棧:位于RAM(隨機(jī)訪問存儲(chǔ)器)中默垄,通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針向下移動(dòng)則分配新的內(nèi)存甚纲,向上移動(dòng)則釋放這些內(nèi)存口锭。這是一種快速有效的分配存儲(chǔ),效率僅次于寄存器介杆。但是在程序執(zhí)行時(shí)鹃操,必須嚴(yán)格的知堆棧站內(nèi)所有對(duì)象的生命周期,以來控制堆棧指針的移動(dòng)春哨,以便維護(hù)堆椌0控制對(duì)象資源的釋放(c c++ 使用該策略執(zhí)行進(jìn)行資源的控制)....?java為了程序的靈活性,放棄了該做法赴背,在java中堆棧用來存儲(chǔ)對(duì)象的引用 并不存放對(duì)象

3.堆:位于RAM中椰拒,一種通用的內(nèi)存池晶渠,用于存放所有的java對(duì)象。堆的好處在于:編譯器不需要知道存儲(chǔ)的數(shù)據(jù)在堆里的生命周期燃观,因此褒脯,在堆分配存儲(chǔ)具有很強(qiáng)的靈活性。需要?jiǎng)?chuàng)建對(duì)象只需要new 關(guān)鍵字就能在堆里面進(jìn)行存儲(chǔ)分配 ?缺點(diǎn):存儲(chǔ)和分配,清理的速度較慢相對(duì)于堆棧存儲(chǔ)(GC負(fù)責(zé)清理對(duì)象資源)

4.常量存儲(chǔ):常量值直接放在程序代碼內(nèi)部缆毁。 因?yàn)樗肋h(yuǎn)不會(huì)改變...有時(shí)在嵌入式系統(tǒng)中番川,常量本身會(huì)與其他部分分離,所以在這種情況下脊框,可以選擇存放在ROM中(比如常量池)

5.非RAM存儲(chǔ): 流對(duì)象 持久化 ?數(shù)據(jù)庫(kù)啥的

2.2.2 基本類型


bit 位 ? byte 字節(jié)(B) ?1請(qǐng)記住好嗎


java中的基本標(biāo)量的 位數(shù)

對(duì)于基本類型 java使用的不是new出對(duì)象放在堆里 而是 學(xué)習(xí)c c++相同的方法 創(chuàng)建一個(gè)非引用的"自動(dòng)常量"颁督,這個(gè)常量直接存儲(chǔ)“值”,并置于堆棧中浇雹,因此更加高效

基本類型具有包裝類 ?使得可以在堆中創(chuàng)建一個(gè)非基本對(duì)象 沉御,來表示基本類型?

char c = “x”;

Character ch = new ?Character(“x”)箫爷;

ch = “x” ? //自動(dòng)裝箱

c = ch //自動(dòng)拆箱

高精度數(shù)字

Java提過兩個(gè)用于計(jì)算高精度的了: BigInteger 和 BigDecimal ?類似包裝類 但沒有對(duì)應(yīng)的基本類型

BigInteger : 支持任意精度的整數(shù)

BigDecimal:支持任意精度的定點(diǎn)數(shù)

2.2.3 Java中的數(shù)組

java中創(chuàng)建一個(gè)數(shù)組就相當(dāng)于創(chuàng)建了一個(gè)引用數(shù)組嚷节,并且每個(gè)引用都指向了null

2.3永遠(yuǎn)不需要銷毀對(duì)象

2.3.1 作用域

在作用域里定義的對(duì)象只可作用于作用域結(jié)束之前 ?{ ? ?<-----scope-----> ? ? ? }

2.3.2對(duì)象的作用域

對(duì)象的作用域與基本類型不同 ??

{

? ? ? ? ? ?String s = new String(“123”);

}//End of scope

引用s在作用域終點(diǎn)就消失了虎锚,然而 對(duì)象 String(“123”)任然在堆中占據(jù)空間硫痰,我們無(wú)法在作用域之后訪問該對(duì)象,因?yàn)樗呀?jīng)超出了作用域的范圍窜护。

2.4 創(chuàng)建新的數(shù)據(jù)類型:類

關(guān)鍵字 class + 類名 { ? }

2.4.1字段和方法

這里注意 在類中 定義的 字段中如果是 基本類型 java會(huì)默認(rèn)為基本類型賦值


基本類型賦值

但是在方法中 int x ?是不會(huì)被默認(rèn)賦值的

2.5 方法 參數(shù)和返回值

java的方法決定了一個(gè)對(duì)象可以接收什么樣的信息 ?

方法基本包括 名稱 參數(shù) 返回值 方法體

void ?main(String[ ] ?arg){ ? ? 修飾符 + 返回值 + 名字 + ()+參數(shù) +{ }

? ? ? ? ? ? A ? a = new A();

? ? ? ? ? ? a.f()效斑; ?// 調(diào)用方法的行為我們一般稱為 發(fā)消失給對(duì)象

}

2.5.1 參數(shù)列表

int getLength (String s ){

? ? ? ?return s.length() ;

}

事實(shí)上在傳遞對(duì)象參數(shù)時(shí) 我們傳遞的是 對(duì)象的引用 因?yàn)?引用指向?qū)ο?所以可以控制對(duì)象

在java中對(duì)象的傳遞其實(shí) 就是對(duì)象引用的傳遞

這里 我想強(qiáng)調(diào)的是 基本類型(除String外) 傳遞的不是引用 而是指

2.6 構(gòu)建一個(gè)java程序

2.6.1 名字空間 又名 命名空間 ?

標(biāo)識(shí)類的位置 同時(shí)也起到區(qū)分的作用 ?所以即使是同類名在java中只要包名不同 就無(wú)所謂了

使用import 來準(zhǔn)確的表示導(dǎo)入那個(gè)包,即類庫(kù)

如果我們?cè)?在 import 后面加* ?則表示我們導(dǎo)入改包下的所有類資源

2.6.2 static

當(dāng)創(chuàng)建類時(shí) 就是在描述這個(gè)類的外觀與行為 java中使用 new 來創(chuàng)建對(duì)象柱徙,數(shù)據(jù)空間才會(huì)被分配

這樣有兩個(gè)問題需要解決:1. 我只想在的定區(qū)域分配一個(gè)存儲(chǔ)空間缓屠,而不想要?jiǎng)?chuàng)建多少對(duì)象

2.我不想使用對(duì)象就調(diào)用某些類的行為,我希望這個(gè)行為和對(duì)象沒有關(guān)系

static 出現(xiàn)就是解決這類問題?

static 方法或域 ?不予對(duì)象關(guān)聯(lián) 而是與包含他的類相關(guān)聯(lián)

使用 : 直接將static放在 類前面做修飾即可

例如 ? class Test {

static ?int ? k =0护侮;

}

這個(gè)情況下 及時(shí)你創(chuàng)建了 連個(gè) Test 對(duì)象?

Test.i 也獨(dú)享一份存儲(chǔ)空間

兩個(gè)對(duì)象共享一個(gè) i

同樣的靜態(tài)方法也適用 :

class Incrementable{

? ? ? ? ? static ?void ?increment (){

? ? ? ? ? ? ? ? ? ? ? ? ? ?xxxx敌完;

? ? ? ? ? ? ?}?

}

Incrementable.increment() ?類名.方法名

當(dāng)使用static 修飾某個(gè)字段時(shí) , 那么這個(gè)字段的創(chuàng)建方式就發(fā)生了改變羊初,

static字段對(duì)于每個(gè)對(duì)象都是只有一份存儲(chǔ)空間滨溉,而非static字段 每個(gè)對(duì)象都有各自不同的存儲(chǔ)空間

但是 static 修飾的方法 差異性卻沒有那么大

2.7 你的第一個(gè)java程序

java.lang 是默認(rèn)導(dǎo)入在每個(gè)類中的

暫時(shí)結(jié)束

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市长赞,隨后出現(xiàn)的幾起案子晦攒,更是在濱河造成了極大的恐慌,老刑警劉巖得哆,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脯颜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贩据,警方通過查閱死者的電腦和手機(jī)栋操,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門闸餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讼庇,你說我怎么就攤上這事绎巨。” “怎么了蠕啄?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵场勤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我歼跟,道長(zhǎng)和媳,這世上最難降的妖魔是什么佃迄? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任志于,我火速辦了婚禮,結(jié)果婚禮上件舵,老公的妹妹穿的比我還像新娘骚秦。我一直安慰自己她倘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布作箍。 她就那樣靜靜地躺著硬梁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胞得。 梳的紋絲不亂的頭發(fā)上荧止,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音阶剑,去河邊找鬼跃巡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牧愁,可吹牛的內(nèi)容都是我干的素邪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼猪半,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼娘香!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起办龄,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淋昭,沒想到半個(gè)月后俐填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翔忽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年英融,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盏檐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驶悟,死狀恐怖胡野,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情痕鳍,我是刑警寧澤硫豆,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站笼呆,受9級(jí)特大地震影響熊响,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诗赌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一汗茄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铭若,春花似錦洪碳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至环鲤,卻和暖如春纯趋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冷离。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工吵冒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人西剥。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓痹栖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瞭空。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揪阿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java 中幾乎一切都是對(duì)象。 2.1 用引用操縱對(duì)象 對(duì)象(這里理解為變量)可以怎樣操縱咆畏? 直接操縱南捂。 間接操縱...
    遺訓(xùn)餘風(fēng)閱讀 306評(píng)論 0 0
  • 向后兼容(Backward Compatbility)和向前兼容(Forward Compability)區(qū)別: ...
    浩林Leon閱讀 93評(píng)論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)旧找,斷路器溺健,智...
    卡卡羅2017閱讀 134,665評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法钮蛛,內(nèi)部類的語(yǔ)法鞭缭,繼承相關(guān)的語(yǔ)法剖膳,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,643評(píng)論 18 399
  • 一級(jí)標(biāo)題 二級(jí)標(biāo)題 三級(jí)標(biāo)題 四級(jí)標(biāo)題 五級(jí)標(biāo)題 六級(jí)標(biāo)題 這是里引用, 引用的用法 無(wú)序列表 1 2 3 1 2...
    墨如白閱讀 257評(píng)論 0 0