java基礎之一 物件,介面

2021-08-03 23:36:36 字數 2015 閱讀 3281

equals:

int t1=1;

int t2=2;

person p1=new person();

person p2=new person();

t1==t2 //true

p1==p2 //false

p1.equals(p2) //true

此處重點說明string和integer物件

string記憶體位置說明

string物件

string a2 = new string(「holtenobj」);

string b2 = new string(「holtenobj」);

class被載入時就在常量池中建立了乙個值為holtenobj的string物件,第一句執行時會在堆裡建立new string(「holtenobj」)物件;

第二句執行時,因為常量池中存在holtenobj所以就不再建立新的string物件了,直接在堆裡建立new string(「holtenobj」)物件。

此時:

a1==b1 //true 常量池值不變

a2==b2 //false 比較棧記憶體位址

a1.equals(b1) //true 比較string物件值

a2.equals(b2) //true 比較new string()物件在堆記憶體中的值

integer:

在interger類中,為了初始化方便,提供-128-127之間的數建立物件時直接建立在常量池中,其他物件會建立堆記憶體中

integer t1=

newinteger(1);

integer t2=

newinteger(1);

integer t3=

newinteger(128);

integer t4=

newinteger(128);

integer c =

3;

integer d =

3;c==d //true jvm底層在常量池建立乙個integer物件

c.equals(d) //true 值相等

t1==t2 //true

t1.equals(t2) //true

t3==t4 //false 位址不一致

t3.equals(t4) //true 堆記憶體中物件值相等

int i=

2017:

integer j=

2017;

i==j //true

i.equals(j) //true 實際物件值相等

共同點:

都不能建立例項化物件,且可包含抽象方法

不同點:

第一:從介面和類的角度

中可以有靜態方法普通方法的實現,靜態變數普通變數構造器普通**塊,而介面都沒有介面可以支援實現多個介面,類不能多繼承。

第二:從設計思想的角度

介面體現一種規範,系統的總覽,規定了實現者向外提供的服務,規定了呼叫者可以呼叫的方法和如何訪問該方法

抽象類體現一種模板式設計,即多個子類呼叫同乙個父類,可以作為系統實現過程中的中間產品,這個產品已經實現了部分功能,但是又有部分功能沒有實現,即這個產品不是最終產品。

JAVA學習筆記之一(物件入門)

1 上溯造型 upcasting 把衍生型別當作他的基礎型別處理的過程 基礎型別shape有方法draw,erase等方法,circle,line,等型別是shape的衍生型別,函式dostuff對基礎型別物件做如下處理 void dostuff shape s s.draw s.erase 這個函...

ruby之一物件比較

ruby物件的比較有三種方式 1 比較兩個物件的值是否相等,返回 true,flase 等於 不等於 a 1 b 1.0 a b true2 比較兩個物件的值 型別是否相等,返回 true,flase eql?a 1 b 1.0 a.eql?b flase a為整數型,b為浮點型 3 比較兩個物件在...

一 物件模型

在ruby程式中,物件僅僅是其大世界的乙個公民而已,除了物件還有其他語言構件,比如類 class 模組 module 以及例項變數 imstance variable 等,元程式設計操控的就是這些語言構件。所有語言構件存在於其中的系統稱為物件模型,它是ruby的靈魂。1 物件由一組例項變數和乙個類的...