- 相關(guān)推薦
計(jì)算機(jī)二級(jí)《Java語言程序設(shè)計(jì)》考試知識(shí)點(diǎn)
同學(xué)們?cè)趥淇加?jì)算機(jī)二級(jí)java考試科目時(shí),要熟悉考試的知識(shí)考點(diǎn),明確備考的方向。面是百分網(wǎng)小編為大家搜索整理的關(guān)于《Java語言程序設(shè)計(jì)》考試知識(shí)點(diǎn),歡迎參考閱讀,希望對(duì)大家有所幫助!想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
知識(shí)點(diǎn)一:java簡(jiǎn)介
2009年04月20日,美國(guó)甲骨文公司74億美元收購(gòu)Sun,取得java的版權(quán)。
Java 是面向?qū)ο蟮恼Z言,沒有面向?qū)ο缶幊探?jīng)驗(yàn)的讀者需要花費(fèi)不少時(shí)間來了解面向?qū)ο蟮母拍、語法和編程思想,有不能理解的地方請(qǐng)大家一定要堅(jiān)持,多花時(shí)間編寫代碼自然會(huì)豁然開朗,從面向過程到面相對(duì)象需要一個(gè)適應(yīng)期。
Java 不只是一種編程語言,它是一個(gè)完整的平臺(tái),擁有龐大的庫(kù),將諸如圖形繪制、Socket連接、數(shù)據(jù)庫(kù)存取等復(fù)雜操作進(jìn)行了最大程度的簡(jiǎn)化。
Java 是跨平臺(tái)的,一次編譯,到處運(yùn)行,在 Windows 上編寫的代碼可以不加修改的移植到 Linux 上,反之也可以。
在世界編程語言排行榜中,Java幾乎占據(jù)著第二名的位置,僅次于C語言。
知識(shí)點(diǎn)二:二維數(shù)組
二維數(shù)組的定義
type arrayName[ ][ ];
type [ ][ ]arrayName;
|
只是形式上的差別,大家可以根據(jù)自己的習(xí)慣來選擇。
二維數(shù)組的初始化
1.靜態(tài)初始化
int intArray[ ][ ]={{ 1 , 2 },{ 2 , 3 },{ 3 , 4 , 5 }};
|
Java語言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不是連續(xù)分配的,所以不要求二維數(shù)組每一維的大小相同。
2.動(dòng)態(tài)初始化
1) 直接為每一維分配空間,格式如下:
arrayName = new type[arrayLength1][arrayLength2];
int a[ ][ ] = new int [ 2 ][ 3 ];
|
2) 從最高維開始,分別為每一維分配空間:
arrayName = new type[arrayLength1][ ];
arrayName[ 0 ] = new type[arrayLength20];
arrayName[ 1 ] = new type[arrayLength21];
…
arrayName[arrayLength1- 1 ] = new type[arrayLength2n];
|
3) 例:
二維簡(jiǎn)單數(shù)據(jù)類型數(shù)組的動(dòng)態(tài)初始化如下:
int a[ ][ ] = new int [ 2 ][ ];
a[ 0 ] = new int [ 3 ];
a[ 1 ] = new int [ 5 ];
|
對(duì)二維復(fù)合數(shù)據(jù)類型的數(shù)組,必須首先為最高維分配引用空間,然后再順次為低維分配空間。而且,必須為每個(gè)數(shù)組元素單獨(dú)分配空間。例如:
String s[ ][ ] = new String[ 2 ][ ];
s[ 0 ]= new String[ 2 ]; //為最高維分配引用空間
s[ 1 ]= new String[ 2 ]; //為最高維分配引用空間
s[ 0 ][ 0 ]= new String( "Good" ); // 為每個(gè)數(shù)組元素單獨(dú)分配空間
s[ 0 ][ 1 ]= new String( "Luck" ); // 為每個(gè)數(shù)組元素單獨(dú)分配空間
s[ 1 ][ 0 ]= new String( "to" ); // 為每個(gè)數(shù)組元素單獨(dú)分配空間
s[ 1 ][ 1 ]= new String( "You" ); // 為每個(gè)數(shù)組元素單獨(dú)分配空間
|
二維數(shù)組元素的引用
對(duì)二維數(shù)組中的每個(gè)元素,引用方式為:
arrayName[index1][index2] |
例如:
num[ 1 ][ 0 ]; |
二維數(shù)組舉例:兩個(gè)矩陣相乘
public class MatrixMultiply{
public static void main(String args[]){
int i,j,k;
int a[][]=new int [2][3]; //動(dòng)態(tài)初始化一個(gè)二維數(shù)組
int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};//靜態(tài)初始化一個(gè)二維數(shù)組
int c[][]=new int[2][4]; //動(dòng)態(tài)初始化一個(gè)二維數(shù)組
for (i=0;i<2;i++)
for (j=0; j<3 ;j++)
a[i][j]=(i+1)*(j+2);
for (i=0;i<2;i++){
for (j=0;j<4;j++){
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
System.out.println("*******Matrix C********");//打印Matrix C標(biāo)記
for(i=0;i<2;i++){
for (j=0;j<4;j++)
System.out.println(c[i][j]+" ");
System.out.println();
}
}
}
知識(shí)點(diǎn)三:String
1、初始化:
一般由String聲明的字符串,長(zhǎng)度是不可變的,這也是它與StringBuffer和StringBuilder最直觀的一個(gè)區(qū)別。一般初始化方式:String s = "hello world";經(jīng)過這條語句,JVM的棧內(nèi)存中產(chǎn)生一個(gè)s變量,堆內(nèi)存中產(chǎn)生hello world字符串對(duì)象。s指向了hello world的地址。像上面這種方式產(chǎn)生的字符串屬于直接量字符串對(duì)象,JVM在處理這類字符串的時(shí)候,會(huì)進(jìn)行緩存,產(chǎn)生時(shí)放入字符串池,當(dāng)程序需要再次使用的時(shí)候,無需重新創(chuàng)建一個(gè)新的字符串,而是直接指向已存在的字符串。
2、String s = "123" + "456"內(nèi)存中產(chǎn)生幾個(gè)字符串對(duì)象?
這是個(gè)比較有爭(zhēng)議的問題,面試的時(shí)候,老師還挺喜歡問,論壇上大家說幾個(gè)的也有,我給大家分析一下,因?yàn)槲覀兦懊嬗刑岬絁ava字符串的緩存機(jī)制,編譯器在編譯的時(shí)候會(huì)進(jìn)行優(yōu)化,所以在編譯的過程中123和456被合成了一個(gè)字符串"123456",因此,如果緩存池中目前沒有123456這個(gè)對(duì)象,那么會(huì)產(chǎn)生一個(gè),即""123456",且棧中產(chǎn)生一個(gè)引用s指向它,如果緩存池中已經(jīng)存在"123456",那么將產(chǎn)生0個(gè)對(duì)象,直接用s指向它。
3、StringBuffer、StringBuilder
StringBuffer和StringBuilder就是所謂的可變字符串類,共四個(gè)構(gòu)造方法:
StringBuffer()
public StringBuffer(int paramInt)
public StringBuffer(String paramString)
public StringBuffer(CharSequence paramCharSequence)
觀察其源碼發(fā)現(xiàn),使用StringBuffer()時(shí),默認(rèn)開辟16個(gè)字符的長(zhǎng)度的空間,使用public StringBuffer(int paramInt)時(shí)開辟指定大小的空間,使用public StringBuffer(String paramString)時(shí),開辟paramString.length+16大小的空間。都是調(diào)用父類的構(gòu)造器super()來開辟內(nèi)存。這方面StringBuffer和StringBuilder都一樣,且都實(shí)現(xiàn)AbstractStringBuilder類。
二者幾乎沒什么區(qū)別,基本都是在調(diào)用父類的各個(gè)方法,一個(gè)重要的區(qū)別就是StringBuffer是線程安全的,內(nèi)部的大多數(shù)方法前面都有關(guān)鍵字synchronized,這樣就會(huì)有一定的性能消耗,StringBuilder是非線程安全的,所以效率要高些。
知識(shí)點(diǎn)四:對(duì)象
1、初始化順序:總體來說執(zhí)行順序?yàn)椋红o態(tài)塊->靜態(tài)屬性->非靜態(tài)塊->屬性->構(gòu)造器。接下來我們分析一下類的屬性和方法。
2、屬性:
類中的屬性一般分為類屬性(全局變量)、實(shí)例屬性(全局變量)、局部屬性(局部變量)。<我是這么分的,盡管有人不這么分,但是分法無所謂,理解它們的含義最重要>.
類屬性:前面已經(jīng)說過就是那些聲明為static的屬性,在整個(gè)過程中只進(jìn)行一次初始化,在內(nèi)存中只開辟一個(gè)空間,不論在哪兒調(diào)用,值保持一致。一旦被修改,所有引用它的地方都會(huì)跟著修改。一般直接通過類名進(jìn)行調(diào)用。
實(shí)例屬性:實(shí)例變量是可以不進(jìn)行初始化,比如一個(gè)整型的實(shí)例變量假如沒有初始化,則默認(rèn)值為0;而局部變量假如不賦初值語法上是通過的,但是在使用這個(gè)變量是程序就報(bào)錯(cuò)了。實(shí)例變量在堆和棧中都分配內(nèi)存空間,在堆當(dāng)中分配的是對(duì)象本身,而棧中則是對(duì)這個(gè)對(duì)象的引用。
局部屬性:局部變量是在方法內(nèi)部聲明的變量,生命期僅在方法內(nèi),方法結(jié)束后變量就消失了;局部變量必須初始化再使用,否則會(huì)報(bào)錯(cuò),也就是說,假如你在方法內(nèi)定義了一個(gè)局部變量,并且沒有賦值,那么你在使用這個(gè)變量的時(shí)候一定得賦值,不然就報(bào)錯(cuò)了。同時(shí),局部變量可屏蔽全局變量。
3、重載:
是指在同一個(gè)類中,具有相同的方法名,不同的參數(shù)列表的方法之間的一種機(jī)制。參數(shù)列表的不同體現(xiàn)在:類型不同、個(gè)數(shù)不同、順序不同,只要滿足任一一個(gè),就可以進(jìn)行方法重載。
4、重寫:
重寫是在繼承中存在的,在兩個(gè)類(子類和父類之間存在的關(guān)系)中,子類重寫父類的方法,方法名相同,參數(shù)也相同的一種機(jī)制。
5、不定參數(shù)調(diào)用
public static String a(String ... value);
和下面的效果一樣
public static String a(String[] value);
6、類與對(duì)象的關(guān)系
1)類是一類具有相同屬性的事物的統(tǒng)稱,是一種抽象。
2)對(duì)象是類的具體體現(xiàn),又稱實(shí)例。
3)類是一種靜態(tài)的概念,而對(duì)象是一種動(dòng)態(tài)的機(jī)制。
【計(jì)算機(jī)二級(jí)《Java語言程序設(shè)計(jì)》考試知識(shí)點(diǎn)】相關(guān)文章:
2017計(jì)算機(jī)二級(jí)Java語言程序設(shè)計(jì)知識(shí)點(diǎn)09-21
計(jì)算機(jī)二級(jí)《Java語言程序設(shè)計(jì)》知識(shí)點(diǎn)練習(xí)10-27
2016計(jì)算機(jī)二級(jí)考試Java語言程序設(shè)計(jì)輔導(dǎo)08-29
二級(jí)計(jì)算機(jī)Java語言程序設(shè)計(jì)試題10-11
2016年二級(jí)java語言程序設(shè)計(jì)考試大綱10-28
2015全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Java語言程序設(shè)計(jì)考試大綱10-15