當前位置:才華齋>計算機>計算機二級>

2016計算機二級《Java語言程式設計》知識考點

計算機二級 閱讀(1.96W)

《Java語言程式設計》是計算機二級考試科目之一,為了幫助考生們熟悉考試科目的考點,明確備考的方向,下面本站小編為大家搜尋整理了關於《Java語言程式設計》知識考點,歡迎參考學習,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!

2016計算機二級《Java語言程式設計》知識考點

  一、java簡介

2009年04月20日,美國甲骨文公司74億美元收購Sun,取得java的版權。

Java 是面向物件的語言,沒有面向物件程式設計經驗的讀者需要花費不少時間來了解面向物件的概念、語法和程式設計思想,有不能理解的地方請大家一定要堅持,多花時間編寫程式碼自然會豁然開朗,從面向過程到面相物件需要一個適應期。

Java 不只是一種程式語言,它是一個完整的平臺,擁有龐大的庫,將諸如圖形繪製、Socket連線、資料庫存取等複雜操作進行了最大程度的簡化。

Java 是跨平臺的,一次編譯,到處執行,在 Windows 上編寫的程式碼可以不加修改的移植到 Linux 上,反之也可以。

在世界程式語言排行榜中,Java幾乎佔據著第二名的位置,僅次於C語言

  二、String

1、初始化:

一般由String宣告的字串,長度是不可變的,這也是它與StringBuffer和StringBuilder最直觀的一個區別。一般初始化方式:String s = "hello world";經過這條語句,JVM的棧記憶體中產生一個s變數,堆記憶體中產生hello world字串物件。s指向了hello world的地址。像上面這種方式產生的字串屬於直接量字串物件,JVM在處理這類字串的時候,會進行快取,產生時放入字串池,當程式需要再次使用的時候,無需重新建立一個新的字串,而是直接指向已存在的字串。

2、String s = "123" + "456"記憶體中產生幾個字串物件?

這是個比較有爭議的問題,面試的時候,老師還挺喜歡問,論壇上大家說幾個的也有,我給大家分析一下,因為我們前面有提到Java字串的快取機制,編譯器在編譯的時候會進行優化,所以在編譯的過程中123和456被合成了一個字串"123456",因此,如果快取池中目前沒有123456這個物件,那麼會產生一個,即""123456",且棧中產生一個引用s指向它,如果快取池中已經存在"123456",那麼將產生0個物件,直接用s指向它。

3、StringBuffer、StringBuilder

StringBuffer和StringBuilder就是所謂的可變字串類,共四個構造方法:

StringBuffer()

public StringBuffer(int paramInt)

public StringBuffer(String paramString)

public StringBuffer(CharSequence paramCharSequence)

觀察其原始碼發現,使用StringBuffer()時,預設開闢16個字元的長度的空間,使用public StringBuffer(int paramInt)時開闢指定大小的空間,使用public StringBuffer(String paramString)時,開闢th+16大小的空間。都是呼叫父類的構造器super()來開闢記憶體。這方面StringBuffer和StringBuilder都一樣,且都實現AbstractStringBuilder類。

二者幾乎沒什麼區別,基本都是在呼叫父類的各個方法,一個重要的區別就是StringBuffer是執行緒安全的,內部的大多數方法前面都有關鍵字synchronized,這樣就會有一定的效能消耗,StringBuilder是非執行緒安全的,所以效率要高些。

  三、物件

1、初始化順序:總體來說執行順序為:靜態塊->靜態屬性->非靜態塊->屬性->構造器。接下來我們分析一下類的屬性和方法。

2、屬性:

類中的屬性一般分為類屬性(全域性變數)、例項屬性(全域性變數)、區域性屬性(區域性變數)。<我是這麼分的,儘管有人不這麼分,但是分法無所謂,理解它們的含義最重要>.

類屬性:前面已經說過就是那些宣告為static的屬性,在整個過程中只進行一次初始化,在記憶體中只開闢一個空間,不論在哪兒呼叫,值保持一致。一旦被修改,所有引用它的地方都會跟著修改。一般直接通過類名進行呼叫。

例項屬性:例項變數是可以不進行初始化,比如一個整型的例項變數假如沒有初始化,則預設值為0;而區域性變數假如不賦初值語法上是通過的,但是在使用這個變數是程式就報錯了。例項變數在堆和棧中都分配記憶體空間,在堆當中分配的是物件本身,而棧中則是對這個物件的引用。

區域性屬性:區域性變數是在方法內部宣告的變數,生命期僅在方法內,方法結束後變數就消失了;區域性變數必須初始化再使用,否則會報錯,也就是說,假如你在方法內定義了一個區域性變數,並且沒有賦值,那麼你在使用這個變數的時候一定得賦值,不然就報錯了。同時,區域性變數可遮蔽全域性變數。

3、過載:

是指在同一個類中,具有相同的`方法名,不同的引數列表的方法之間的一種機制。引數列表的不同體現在:型別不同、個數不同、順序不同,只要滿足任一一個,就可以進行方法過載。

4、重寫:

重寫是在繼承中存在的,在兩個類(子類和父類之間存在的關係)中,子類重寫父類的方法,方法名相同,引數也相同的一種機制。

5、不定引數呼叫

public static String a(String ... value);

和下面的效果一樣

public static String a(String[] value);

6、類與物件的關係

1)類是一類具有相同屬性的事物的統稱,是一種抽象。

2)物件是類的具體體現,又稱例項。

3)類是一種靜態的概念,而物件是一種動態的機制。

  四、抽象類、介面

1、抽象類與介面:

抽象類是一種類,裡面除了有抽象方法外,還可以有具體的方法;

接口裡面必須都是抽象的方法;

在Java中,凡是宣告為形如:abstract void function()的方法,都是抽象方法;

包含抽象方法的類就是抽象類,抽象類中是可以沒有抽象方法的;

有抽象方法的類必須是抽象類;

抽象類不一定有實體方法。

2、繼承:

Java繼承機制不允許多重繼承類,但一個類允許實現多個介面

繼承抽象類時,必須重寫其抽象方法;

抽象類不能被宣告為final型別的,因為加final關鍵字的類保證不能被繼承,因此為抽象類加final關鍵字,這個類就沒法用了。抽象類只能被繼承,不能被例項化!

宣告為interface的類為介面,比抽象類更加抽象的一種機制。在介面中,我們不能提供任何實現,所有方法必須都是抽象的,可以不加 abstract關鍵字,但是編譯器對於介面中的方法,都是直接按抽象方法處理的。我們通過implements來實現某個介面。當我們實現某個介面時,必須重寫其所有方法。

3、總結一下抽象類與介面的區別和聯絡:

a) 抽象類是類,可以有實體方法。

b) 抽象類不能實現多繼承,而介面可以。

c) 如果需要建立不帶任何方法定義和成員變數的基類,則使用介面,如果類中需要有部分具體的實現,則使用抽象類。

d) 如果事先想要將某類設計為一個基類,那麼首選介面。