Java編程思想筆記2.一切都是對象

一年又一年,字節(jié)跳動(dòng) Lark(飛書) 研發(fā)團(tuán)隊(duì)又雙叒叕開始招新生啦!
【內(nèi)推碼】:GTPUVBA
【內(nèi)推鏈接】:https://job.toutiao.com/s/JRupWVj
【招生對象】:20年9月后~21年8月前 畢業(yè)的同學(xué)
【報(bào)名時(shí)間】:6.16-7.16(提前批簡歷投遞只有一個(gè)月抓住機(jī)會(huì)哦!)
【畫重點(diǎn)】:提前批和正式秋招不矛盾双戳!面試成功殖演,提前鎖定Offer;若有失利寻行,額外獲得一次面試機(jī)會(huì),正式秋招開啟后還可再次投遞匾荆。

點(diǎn)擊進(jìn)入我的博客

2.1 用引用操縱對象

盡管一切都看作對象拌蜘,但操縱的標(biāo)識(shí)符實(shí)際上是對象的一個(gè)“引用”。

String s;
// s是一個(gè)String類型的引用牙丽, 并沒有任何對象與其關(guān)聯(lián)
String str = "imbug";
// 創(chuàng)建str引用的時(shí)候同時(shí)進(jìn)行初始化

2.2 必須由你創(chuàng)建所有對象

使用new操作符來創(chuàng)建新對象并與引用關(guān)聯(lián)简卧。

String str = new String("imbug");

2.2.1 存儲(chǔ)到什么地方

  • 寄存器(不管你的事)——最快的存儲(chǔ)區(qū)、位于處理器內(nèi)部烤芦、空間極小举娩、不能直接控制
  • 堆棧(棧)——位于RAM、堆棧指針向下移動(dòng)分配新內(nèi)存构罗、堆棧指針向上釋放內(nèi)存铜涉、存儲(chǔ)對象的引用
  • 堆——位于RAM、存放Java對象遂唧、耗時(shí)比堆棧長
  • 常量存儲(chǔ)——程序代碼內(nèi)部
  • 非RAM存儲(chǔ)——如磁盤

2.2.2 特殊:基本類型

問題:用new創(chuàng)建的對象在堆里芙代,對訪問頻繁而且簡單的對象代價(jià)太大。
方法:不用new創(chuàng)建變量盖彭,而是創(chuàng)建一個(gè)不是引用的變量纹烹,直接存儲(chǔ)“值”在棧中页滚。

基本類型 大小 最小值 最大值 包裝器類型
boolean - - - Boolean
char 16bits 0 2^16-1 Character
byte 8bits -128 127 Byte
short 16bits -2^15 2^15-1 Short
int 32bits -2^31 2^31-1 Integer
long 64bits -2^63 2^63-1 Long
float 32bits - - Float
double 64bits - - Double
void - - - Void
關(guān)于存儲(chǔ)空間

Java確定每種基本數(shù)據(jù)類型所占空間的大小,跟硬件平臺(tái)無關(guān)铺呵。

關(guān)于boolean類型
  • boolean類型所占類型的大小沒用明確指定裹驰,今定義為能夠取字面值truefalse
  • 在《Java虛擬機(jī)規(guī)范》一書的描述陪蜻,“雖然定義了boolean這種數(shù)據(jù)類型邦马,但是只對它提供了非常有限的支持。在Java虛擬機(jī)中沒有任何供boolean值專用的字節(jié)碼指令宴卖,Java語言表達(dá)式所操作的boolean值滋将,在編譯之后都使用Java虛擬機(jī)中的int數(shù)據(jù)類型來代替,而boolean數(shù)組將會(huì)被編碼成Java虛擬機(jī)的byte數(shù)組症昏,每個(gè)元素boolean元素占8位”随闽。
  • 這樣我們可以得出boolean類型占了單獨(dú)使用是4個(gè)字節(jié),在數(shù)組中又是1個(gè)字節(jié)肝谭。
  • 根據(jù)http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文檔的描述:The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
關(guān)于高精度數(shù)字

Java提供了BigInteger和BitDecimal兩個(gè)高精度計(jì)算的類掘宪,但是沒有對應(yīng)的基本類型。

2.2.3 數(shù)組

Java確保數(shù)組會(huì)被初始化攘烛,而且不能在它的范圍之外被訪問魏滚;這種范圍檢查的原理是每個(gè)數(shù)組上的少量內(nèi)存開銷和運(yùn)行時(shí)的下標(biāo)檢查。
創(chuàng)建一個(gè)數(shù)組對象Object[] arr = new Object[10];時(shí)坟漱,實(shí)際上是創(chuàng)建了一個(gè)引用的數(shù)組鼠次,數(shù)組中的每個(gè)引用都自動(dòng)被初始化為null;如果是創(chuàng)建的是基本數(shù)據(jù)類型數(shù)組芋齿,則會(huì)講該數(shù)組所占的棧內(nèi)存全部置為0腥寇。

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

2.3.1 變量以及基本類型的作用域

Java語言中,作用域由花括號(hào){}位置決定觅捆,在作用域中定義的變量只可作用于作用域結(jié)束之前赦役。

2.3.2 對象的作用域

Java對象和基本類型的生命周期不一致。

{
    String str = new String("imbug");
}

上述代碼中當(dāng)超出}的范圍之后栅炒,引用str已經(jīng)消失了掂摔,但它指向的String對象仍然存在在堆內(nèi)存中,但我們無法訪問該對象赢赊,因?yàn)樗囊靡呀?jīng)消失棒呛。
Java使用垃圾回收器來管理new創(chuàng)建的對象,并辨別那些不會(huì)再被使用的對象域携,然后釋放其占據(jù)的內(nèi)存空間。

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

使用class關(guān)鍵字來表示“一種新的類型”鱼喉。
在Java中秀鞭,你的工作就是定義趋观,產(chǎn)生這些類的對象,以及發(fā)送消息給這些對象锋边。

class ClassName {
}
字段(數(shù)據(jù)成員):可以是任何的對象和基本數(shù)據(jù)類型
  • Java會(huì)對全部字段進(jìn)行初始化
  • 基本數(shù)據(jù)類型初始值為0(false皱坛、\u0000等…)
  • 對象的引用初始值null
  • 當(dāng)變量作為類的成員時(shí)才會(huì)被初始化,局部變量不會(huì)被初始化
方法(成員函數(shù)):詳見2.5節(jié)

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

ReturnType methonName( /* Arguement list */ ) {
    /* Method body */
}
  • Java方法決定了一個(gè)對象能夠接收什么樣的消息剩辟。
  • 方法的基本組成包括:名稱、參數(shù)往扔、返回值贩猎、方法體
  • 方法名和參數(shù)列表唯一的標(biāo)識(shí)出某個(gè)方法。
  • Java中的方法只能作為類的一部分來創(chuàng)建萍膛。
參數(shù)列表
  • 方法的參數(shù)列表指定要傳遞給方法什么樣的信息吭服。
  • 參數(shù)列表中必須指定每個(gè)所傳遞對象的類型及名字。
  • 傳遞的實(shí)際上是引用蝗罗。
  • 如果返回的類型是void艇棕,則return的作用僅是退出方法;否則必須返回正確的返回值

2.6 包名串塑、import沼琉、static

名字可見性

Java約定以域名反轉(zhuǎn)作為包名,用.來劃分子目錄桩匪,并且全部小寫打瘪。

import關(guān)鍵字

使用import關(guān)鍵字引用其他定義好的類

static關(guān)鍵字

現(xiàn)象:創(chuàng)建一個(gè)class的時(shí)候,只是描述一個(gè)類的對象的外觀與行為吸祟。在new創(chuàng)建該類的對象之后瑟慈,才會(huì)分配數(shù)據(jù)存儲(chǔ)空間,其方法才可以被外界調(diào)用屋匕。
問題:只想為特定域分配單一存儲(chǔ)空間而不想去分配多少對象葛碧;希望某個(gè)方法不與包含它的類的任何對象關(guān)聯(lián)在一起。
方法:static關(guān)鍵字

  • 當(dāng)聲明一個(gè)事物是static時(shí)过吻,就意味著這個(gè)字段或者方法不與任何對象綁定在一起
  • 不需要?jiǎng)?chuàng)建對象也可以訪問該類的任何static域和static方法
  • 即使沒有顯示地聲明為static进泼,類的構(gòu)造器實(shí)際上也是靜態(tài)方法
  • 和其他任何方法一樣,static方法可以創(chuàng)建或使用與其類型相同的被命名對象纤虽,因此乳绕,static方法常常拿來做“牧羊人”的角色,負(fù)責(zé)看護(hù)與其隸屬同一類型的實(shí)例群逼纸。如果你的類代表羊洋措,那么創(chuàng)建的若干的該類的對象,就好像建了一個(gè)羊群杰刽,然而菠发,類中的static方法就好比牧羊人一樣王滤,無論你的羊群中有多少只羊,而牧羊人只有一個(gè)滓鸠。也就是說雁乡, static方法或?qū)傩耘c對象的創(chuàng)建無關(guān),只和類有關(guān)糜俗。

2.7 main方法踱稍、編譯、運(yùn)行

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        // main方法args用于接收命令行參數(shù)
        System.out.println(new Date());
    }
}

2.8 注釋和文檔

2.8.1 java的注釋

/* 多行注釋 */
// 單行注釋

2.8.2 javadoc

javadoc是用于提取注釋的工具悠抹,他可以找出程序內(nèi)的特殊注釋標(biāo)簽并解析珠月。
javadoc輸出的是一個(gè)HTML文件。
所有javadoc命令都只能在/* */注釋中出現(xiàn)锌钮。
使用javadoc有兩種方式:嵌入HTML或使用文檔標(biāo)簽
獨(dú)立文檔標(biāo)簽:@字符開頭桥温,且要置于注釋行的最前面
行內(nèi)文檔標(biāo)簽:出現(xiàn)在任何地方,以@開頭梁丘,但要放在{}內(nèi)
javadoc只能為publicprotect成員進(jìn)行文檔注釋侵浸,private包內(nèi)可訪問的注釋會(huì)被忽略,輸出結(jié)果中看不到它們氛谜。使用-private標(biāo)記可以把private注釋也包括進(jìn)去掏觉。

2.8.3 嵌入式HTML

不要在嵌入式HTML標(biāo)簽中使用標(biāo)題如<h1><hr>值漫,否則會(huì)跟javadoc自己的標(biāo)題沖突澳腹。

2.8.4 文檔標(biāo)簽

  • @see package.class#member:允許用戶引用其他類的文檔
  • {@link package.class#member}:跟@see相似,只是它用于行內(nèi)
  • {@docRoot}:該標(biāo)簽產(chǎn)生到文檔根目錄的相對路徑杨何,用于文檔樹
  • {@inheritDoc}:從這個(gè)類的基類繼承相關(guān)文檔到當(dāng)前文檔注釋中
  • @version:版本信息酱塔;-version標(biāo)記可以從生成的HTML中提取出版本信息
  • @author:作者信息;-author標(biāo)記危虱;可以使用多個(gè)@author標(biāo)簽但是必須連續(xù)放置
  • @since:程序代碼最早的版本
  • @param:方法的參數(shù)
  • @return:方法的返回
  • @throws:異常拋出
  • @deprecated:過時(shí)

2.8.5 編碼風(fēng)格

類名:首字母大寫羊娃、多個(gè)字母駝峰法
域名&方法名:首字母小寫、多個(gè)字母駝峰法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埃跷,一起剝皮案震驚了整個(gè)濱河市蕊玷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弥雹,老刑警劉巖垃帅,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剪勿,居然都是意外死亡贸诚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酱固,“玉大人二鳄,你說我怎么就攤上這事∶角樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵髓窜,是天一觀的道長扇苞。 經(jīng)常有香客問我,道長寄纵,這世上最難降的妖魔是什么鳖敷? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮程拭,結(jié)果婚禮上定踱,老公的妹妹穿的比我還像新娘。我一直安慰自己恃鞋,他們只是感情好崖媚,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恤浪,像睡著了一般畅哑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上水由,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天荠呐,我揣著相機(jī)與錄音,去河邊找鬼砂客。 笑死泥张,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鞠值。 我是一名探鬼主播媚创,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼齿诉!你這毒婦竟也來了筝野?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤粤剧,失蹤者是張志新(化名)和其女友劉穎歇竟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抵恋,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡焕议,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弧关。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盅安。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唤锉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出别瞭,到底是詐尸還是另有隱情窿祥,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布蝙寨,位于F島的核電站晒衩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏墙歪。R本人自食惡果不足惜听系,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望虹菲。 院中可真熱鬧靠胜,春花似錦、人聲如沸毕源。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脑豹。三九已至郑藏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘩欺,已是汗流浹背必盖。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俱饿,地道東北人歌粥。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拍埠,于是被迫代替她去往敵國和親失驶。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 1.用句柄操作對象 擁有一個(gè)句柄枣购,并不表示必須有一個(gè)對象同它連接嬉探。創(chuàng)建一個(gè)句柄時(shí),記住無論如何都進(jìn)行初始化: 這里...
    王偵閱讀 193評(píng)論 0 0
  • "你丟過手機(jī),丟過鑰匙,丟過駕駛證..這次你又丟了身份證,還搭上我們娘倆的...下次你丟了自己前能不能先提前告訴...
    怡然莊主閱讀 696評(píng)論 0 0
  • 若世上有十分美,有九分在耶路撒冷分瘾。若世上有十分哀愁胎围,亦有九分在耶路撒冷。——《塔木德》 耶路撒冷燃燒著十字軍的渴望...
    石辣西閱讀 1,834評(píng)論 0 1
  • 翻出以前零散記錄的一些筆記白魂,當(dāng)時(shí)有用的汽纤,現(xiàn)在有一兩點(diǎn)啟發(fā),如下福荸。 1.學(xué)員分析蕴坪。不止分析學(xué)員的知識(shí)基礎(chǔ)和需求,還要...
    Miracle嗨閱讀 231評(píng)論 0 0