字串常量池,面向超類,介面知識筆記總結

2021-07-13 04:53:19 字數 2401 閱讀 2857

一、字串常量池-(了解即可)

特點及作用:儲存在【方法區】中,可以【重複的利用】已有的【字串物件】->【節約記憶體】

字串 string:固定字串,不可變字串(物件裡儲存的字元不能更改)

stringbuilder:可變字串(物件裡儲存的字元可以更改)

stringbuffere:可變字串(物件裡儲存的字元可以更改)

string intern:始終返回字串物件在【字串常量池】中對應的內容的【字串物件】。

--》利用常量池-》節約記憶體。

1)常量池的物件呼叫intern:直接返回自己的物件。

2)堆裡的物件呼叫intern:如果常量池有對應內容的物件,直接返回常量池物件,沒有,

建立乙個字串物件在常量池中,再返回。

string建立物件的兩種方式-》已經利用字串常量池

1)字串字面值

語法:"字串內容"

2)new物件

new string(字串內容)

string(string original)

copy引數original的內容到新字串物件中,並返回新物件。

注意點1)字串字面值--》可以利用字串常量池

2)new string(字串內容)--》不可以利用字串常量池

--->怎麼選擇==》使用字串字面值--》可以利用字串常量池--》節約記憶體

二、面向超型別程式設計-》

1)定義超型別員工staff

2)具體員工-繼承staff

3)超型別員工staff-定義統一功能-工作

4)具體員工-重寫-工作功能

超型別--》普通類-存在的問題

1)具體類【可以不重寫】必須重寫的方法

2)具體類-作為超型別,【也可以建立物件】-》new staff

不應該建立物件,因為staff是我們抽象出來的,不是業務需要的類。

三、抽象類:也是類,相比普通類而言,多了可以定義抽象方法

抽象方法 ?

就是有功能名字,沒有功能實現。

抽象方法有什麼用?

有時候,類中有一些功能不能確定具體怎麼完成,就可以定義為抽象的方法

抽象和具體不是一定的:由需求,由客戶決定

abstract:抽象的

抽象類的定義語法

abstract class 抽象類名

抽象方法的定義語法

訪問修飾符  abstract

返回值型別

方法名(引數列表);

抽象類注意點

1)抽象類可以擁有0到多個抽象方法

2)普通類不能擁有抽象方法,有抽象方法必須定義為抽象類。

3)抽象類不能(例項化)建立物件

4)抽象類的子型別

a)普通類:對於父類抽象類的所有的抽象的方法-》必須全部實現(重寫)

b)抽象類:對於父類抽象類的所有的抽象的方法-》可選實現(重寫)

5)abstract不能和static一起使用-》物件導向

6)abstract不能和final一起使用-》矛盾了  

四、介面是什麼?

生活中,usb(傳輸資料,充電),指紋(解鎖,支付),wifi(傳輸資料,上網)就是介面!!

簡單理解介面:就是描述了一套抽象功能的集合,就是能完成的事情,但是不做實現!!!

介面和抽象類:包含了抽象的功能,不能建立物件。

都是作為超型別-》規範統一的資料和功能來使用。

怎麼選擇?介面和抽象類

1)如果超型別中有【資料也有功能】---》抽象類】

2)如果超型別中【只有功能】---》介面

定義介面的語法

inte***ce 介面名

公共的抽象的方法:【public abstract】 返回值型別  方法名(引數列表);

注意:【public abstract】可以不寫,預設加上。

公共的靜態的常量:【public static final】  資料型別  常量名[=值1],...;

注意:【public static final】可以不寫,預設加上。 

1)類和類的關係

類可以單繼承類:在子類中可以得到繼承鏈上所有的【資料和功能】

類person繼承類animal

class person extends animal{}

2)類和介面的關係

類可以多實現介面:在子類中得到介面中所有的【抽象-功能】

類person繼承類animal,實現runnable介面(可以跑的),實現flyable介面(可以飛的)

class person [extends animal] [implements runnable,flyable]{} 

3)介面和介面的關係

介面可以多繼承介面:在子介面中得到所有繼承的介面中所有的【抽象-功能】

介面a,繼承介面b和c

inte***ce a extends b,c

字串常量池

string的不可變性。字串常量池是不會儲存相同內容的字串。xx stringtablesize設定stringtable的長度。jdk8最小值為1009 string的string pool是固定大小的hashtable 字串常量池在堆中。字串拼接操作 和 equals equals 對於obje...

字串常量池

string a hello string b hello string aa new string aa string bb new string bb 字串常量池在方法區中 其中 變數a jvm先到字串常量池中尋找如果沒有就在字串常量池中建立乙個字串hello,並且將該字串常量池的hello的記...

JAVA 字串常量池

system.out.println s s1 string 類 equals 重寫 比較的內容 system.out.println s.equals s1 字串是常量,它們的值在建立之後不能更改 一旦修改字串儲存的資料 自動建立乙個的物件內部儲存是修改的資料 string s2 abc new ...