成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

《Java編程思想》讀書筆記-類與對象

NickZhou / 1620人閱讀

摘要:類最基本的作用,在于通過類獲取到相應(yīng)的對象,在向?qū)ο蟀l(fā)送消息時(shí)以期望對象做某些特定的事情。先導(dǎo)概念引用中一切皆對象,因此采用一個(gè)指向?qū)ο蟮囊脕聿倏v對象。對象可以存活于作用域之外。

歡迎各位讀者關(guān)注我的微信公眾號,共同探討Java相關(guān)技術(shù)。生命不止,學(xué)習(xí)不休!

也許你慢慢地對程序有了這樣的認(rèn)識:程序只是一些列帶有方法的對象的組合,這些方法以其它對象為參數(shù),可在任何地方返回,并發(fā)送消息給其他對象。這樣的認(rèn)識,目前來說,是對的。
一覽焦點(diǎn)

Java中的類

新建的對象去了哪里

誰來安置無家可歸的對象

總結(jié)

Java中的類
決定了對象的外觀與行為。Java中用class關(guān)鍵字來對類進(jìn)行定義。

在Java中,允許程序員定義一個(gè)新的數(shù)據(jù)類型來滿足其應(yīng)用的需求。其形式為class后跟上新類型的名稱。比如:

class NewTypeName {
    //class definition
}

通過以上代碼,你就定義了一個(gè)新的名為NewTypeName的數(shù)據(jù)類型。類型名稱可以由程序員自己定義,而class關(guān)鍵字是必須的、大小寫敏感的,一定不能寫錯。但是單純地定義一個(gè)空類定義的類,是沒有任何意義的。

類最基本的作用,在于通過類獲取到相應(yīng)的對象,在向?qū)ο蟀l(fā)送消息時(shí),以期望對象做某些特定的事情。
類的內(nèi)部結(jié)構(gòu)

在對類進(jìn)行定義后,就可以在類中設(shè)置以下兩種類型的元素:字段和方法。

先導(dǎo)概念

引用:Java中一切皆對象,因此采用一個(gè)指向?qū)ο蟮?b>引用來操縱對象。

引用具有操作對象的能力

引用不一定需要有一個(gè)對象與之關(guān)聯(lián)

基本數(shù)據(jù)類型:Java中對于小而簡單的變量,采用對象的形式表示會導(dǎo)致原本輕量的變量變得無比厚重且耗費(fèi)內(nèi)存空間。所以Java中定義了8種基本數(shù)據(jù)類型,其直接存儲值,并置于虛擬機(jī)棧中。每種基本數(shù)據(jù)類型所占存儲空間大小恒定不變。

所有數(shù)值類型都有正負(fù)號

boolean類型所占用的存儲空間的大小沒有明確指定,僅能取字面值true或false

基本數(shù)據(jù)類型都有其對應(yīng)的包裝類型

對于高精度的數(shù)字,需要用BigInteger(支持任何精度的整數(shù))或BigDecimal(支持任何精度的定點(diǎn)數(shù))來表示,二者沒有對應(yīng)的基本類型

基本數(shù)據(jù)類型如下表

基本類型 大小 包裝類型
boolean - Boolean
char 16bit Character
byte 8bit Byte
short 16bit Short
int 32bit Integer
long 64bit Long
float 32bit Float
double 64bit Double

字段

字段可以是基本數(shù)據(jù)類型中的一種,也可以是任何類型的對象,可以通過其引用與其所指向的對象。如果是對某個(gè)對象的引用,那么必須通過初始化使其與一個(gè)實(shí)際的對象關(guān)聯(lián)。

如何引用對象中的某個(gè)字段

對象名稱.字段名稱

示例

class NewTypeName {
    int i;
    int j;
    int k;

    public static void main(String [] args) {
        NewTypeName type = new NewTypeName();
        //此處type是對象的名稱,其是一個(gè)引用,i/j/k分別是NewTypeName這個(gè)類中的字段
        type.i = 1;
        type.j = 2;
        type.k = 3;
    }
}

基本成員默認(rèn)值

如果是基本數(shù)據(jù)類型并作為類的成員使用時(shí),即使沒有初始化,也會確保其有一個(gè)默認(rèn)值,默認(rèn)值如下表所示:

基本類型 默認(rèn)值
boolean false
char "u0000"(null)
byte 0
short 0
int 0
long 0l
float 0.0f
double 0.0d

如果是基本類型且作為方法的局部變量使用時(shí),獲取的默認(rèn)值可能為人一直

如果是引用類型,在沒有進(jìn)行初始化的情況下,默認(rèn)為null

方法

Java中方法用來表示用用來做某些事情的方式。方法的基本構(gòu)成部分包括:方法名稱、參數(shù)、返回值和方法體

一個(gè)方法的基本形式

ReturnType methodName(String arg1, Integer arg2) { /* Method Body */ }

構(gòu)件解析

返回類型:描述方法在調(diào)用之后返回的值

方法名稱:程序員自定義的方法的名稱

參數(shù)列表:描述了要從外部傳遞給方法體的參數(shù)的類型和名稱

方法體:描述一個(gè)方法實(shí)際要做的事情

方法名稱和參數(shù)列表合起來稱為“方法簽名”,其唯一確定地標(biāo)識出某個(gè)方法

在Java中,參數(shù)總是以值的形式進(jìn)行傳遞。如果是基本數(shù)據(jù)類型,則傳遞的是類型的真值;如果是引用類型,則傳遞的是引用的值。Java中不存在引用傳遞。
return關(guān)鍵字在Java的方法中表示返回,存在如下兩種情況:

如果返回類型不為void,則在return后要跟上與返回類型相兼容的值

如果返回類型為void,則return關(guān)鍵字的作用只是用來退出方法,不必在return后跟任何返回值

新建的對象去了哪里
在Java中,創(chuàng)建了一個(gè)引用變量后,最安全的方案就是為其綁定一個(gè)實(shí)際存在的對象,能有效防止惱人的NullPointerException(空指針異常);
對象來自哪里

Java中通過new操作符來實(shí)現(xiàn)對象的創(chuàng)建,其基本形式為:

new NewTypeName();

其中new關(guān)鍵字,表示向堆中申請內(nèi)存;NewTypeName表示一個(gè)數(shù)據(jù)類型,在申請到內(nèi)存空間后,會以這個(gè)數(shù)據(jù)類型為模板進(jìn)行對象的實(shí)例化;實(shí)例化完成后,會對對象中的字段進(jìn)行默認(rèn)值填充。

對象存儲到什么地方

在Java中有5個(gè)不同的地方可以進(jìn)行數(shù)據(jù)存儲:

寄存器:位于處理器內(nèi)部,是最快的存儲區(qū),不能由程序進(jìn)行直接控制

虛擬機(jī)棧:位于隨機(jī)訪問存儲器(RAM)中,通過棧指針的移動進(jìn)行內(nèi)存分配以及內(nèi)存回收,遵循上釋放下分配的原則;這一區(qū)域主要存放基本數(shù)據(jù)類型及數(shù)據(jù)引用

堆:位于RAM中,是一種通用的存儲池,對象存儲的地方。在此處,編譯器不需要知道存儲的數(shù)據(jù)在堆里的生命周期,而由垃圾回收期進(jìn)行管理

常量存儲:常量值通常直接存放在程序代碼內(nèi)部

非RAM存儲:可完全存活于程序外的數(shù)據(jù)。如流對象和持久化對象

誰來安置無家可歸的對象
無家可歸的對象,意味著沒有引用指向該對象,該對象找不到它的歸屬。

在大多數(shù)語言中,都存在作用域的概念。作用域決定了在其內(nèi)部定義的變量名的可見性和生命周期。在Java中不允許嵌套的作用域中,較小的作用域擁有與較大的作用域相同的變量,如下代碼無法通過編譯:

//此處的代碼無法實(shí)際運(yùn)行,只做演示
{
    int x = 11;
    {
        int x = 12;
    }
}

Java中貫徹了一切都是對象的觀念。對象不具備和基本數(shù)據(jù)類型一樣的生命周期。對象可以存活于作用域之外

如以下代碼:

{
    String s = new String("Hello World");
}//運(yùn)行到這里,s已經(jīng)在作用域之外

在上述代碼中,在超過作用域之后,引用變量s的生命周期已經(jīng)結(jié)束,但"Hello World"這個(gè)String對象卻依舊存在。其生存于堆中,只是我們再沒有引用變量來指向這個(gè)對象了,因此這個(gè)對象對于我們來說是不可見的。

那么另外一個(gè)問題是,Java是如何來保障這些沒有引用變量指向的對象不會把內(nèi)存塞爆的呢?Java采用了垃圾回收器,用來監(jiān)視所有用new關(guān)鍵字創(chuàng)建的對象,如果一個(gè)對象不再被引用,那么垃圾收集器便會在隨后的內(nèi)存回收活動中銷毀該對象,并釋放其所占用的內(nèi)存。因此,Java程序員是不需要太在乎內(nèi)存的回收的。

總結(jié)

本文主要以Java的類為切入點(diǎn),描述了從類到對象的創(chuàng)建,然后到對象的存放和銷毀的整個(gè)流程。由于我們大多數(shù)的時(shí)間都是在創(chuàng)建新的類來滿足我們的業(yè)務(wù)需求,因此一個(gè)類的內(nèi)部結(jié)構(gòu)異常重要,好的結(jié)構(gòu)能最大化地提升程序運(yùn)行效率。這涉及到后面講解的設(shè)計(jì)模式,在此只對類的構(gòu)成作一個(gè)了解。

在下一節(jié)中,我們嘗試運(yùn)用目前已學(xué)習(xí)的內(nèi)容,來完成我們的第一個(gè)Java程序。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/77432.html

相關(guān)文章

  • Java編程思想讀書筆記-對象導(dǎo)論

    摘要:而面向?qū)ο髣t是向程序員提供表示問題空間中元素的工具,我們將問題空間中的元素及其在解空間中的表示稱為對象。為什么要把對象看作是服務(wù)提供者呢這是將問題分解為對象集合的一種合理方式。職能太多,可能會導(dǎo)致對象的內(nèi)聚性降低。在試圖將子類對象當(dāng)作其基類 計(jì)算機(jī)是頭腦延伸的工具,是一種不同類型的表達(dá)媒體。本文以背景性的和補(bǔ)充性的材料,介紹包括開發(fā)方法概述在內(nèi)的面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-orie...

    NickZhou 評論0 收藏0
  • Java應(yīng)用架構(gòu)設(shè)計(jì):模塊化模式與OSGi》讀書筆記

    摘要:本書概括以軟件系統(tǒng)為例,重點(diǎn)講解了應(yīng)用架構(gòu)中的物理設(shè)計(jì)問題,即如何將軟件系統(tǒng)拆分為模塊化系統(tǒng)。容器獨(dú)立模塊不依賴于具體容器,采用輕量級容器,如獨(dú)立部署模塊可獨(dú)立部署可用性模式發(fā)布接口暴露外部配置使用獨(dú)立的配置文件用于不同的上下文。 本文為讀書筆記,對書中內(nèi)容進(jìn)行重點(diǎn)概括,并將書中的模塊化結(jié)合微服務(wù)、Java9 Jigsaw談?wù)劺斫狻?本書概括 以Java軟件系統(tǒng)為例,重點(diǎn)講解了應(yīng)用架構(gòu)...

    seanHai 評論0 收藏0
  • java 8 實(shí)戰(zhàn)》讀書筆記 -第十三章 函數(shù)式的思考

    摘要:當(dāng)我們希望能界定這二者之間的區(qū)別時(shí),我們將第一種稱為純粹的函數(shù)式編程,后者稱為函數(shù)式編程。函數(shù)式編程我們的準(zhǔn)則是,被稱為函數(shù)式的函數(shù)或方法都只能修改本地變量。另一種觀點(diǎn)支持引用透明的函數(shù)式編程,認(rèn)為方法不應(yīng)該有對外部可見的對象修改。 一、實(shí)現(xiàn)和維護(hù)系統(tǒng) 1.共享的可變數(shù)據(jù) 如果一個(gè)方法既不修改它內(nèi)嵌類的狀態(tài),也不修改其他對象的狀態(tài),使用return返回所有的計(jì)算結(jié)果,那么我們稱其為純粹...

    Donne 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<