第一篇:Java復(fù)習(xí)題
Java復(fù)習(xí)題
一、選擇題
1、當(dāng)某一線程正處于休眠狀態(tài),而另一個(gè)線程用 Thread 類中的 interrupt()方法中斷它時(shí),拋出的異常類型是(C)。
A)IOException
B)RuntimeException C)InterruptedException
D)ClassNotFoundException
2、下面語句的功能是(A)。
RandomAccessFile raf2 = new RandomAccessFile(“1.txt”,“rw”);
A)打開當(dāng)前目錄下的文件1.txt,既可以向文件寫數(shù)據(jù),也可以從文件讀數(shù)據(jù)。
B)打開當(dāng)前目錄下的文件1.txt,但只能向文件寫入數(shù)據(jù),不能從文件讀取數(shù)據(jù)。C)打開當(dāng)前目錄下的文件1.txt,但不能向文件寫入數(shù)據(jù),只能從文件讀取數(shù)據(jù)。D)以上說法都不對。
3、下面的程序段的功能是(D)。
File file1=new File(“d:xxxyyyzzz”);file1.mkdirs();A)在當(dāng)前目錄下生成子目錄:xxxyyyzzz
B)生成目錄: e:xxxyyyzzz
C)在當(dāng)前目錄下生成文件xxx.yyy.zzz
D)以上說法都不對
4、以下關(guān)于java異常說法不正確的是(D)。
A)Throwable 類是 Java 語言中Error類和Exception類的父類。
B)當(dāng)異常對象是Exception類(或其子類)的實(shí)例時(shí),能通過 Java 虛擬機(jī)或者 throw 語句拋出該異常對象,并能通過try…catch…finally處理。
C)如果只用一個(gè)catch塊捕捉多個(gè)異常對象,則catch 子句中的參數(shù)類型應(yīng)是所有異常對象的父類。D)以上說法都不對。
5、下面關(guān)于Java中異常處理try塊的說法正確的是(D)? A)每個(gè)try塊后都有且僅有一個(gè)catch 塊完成對拋出異常的處理。
B)catch 塊后必須有finally塊。
C)可能拋出異常的方法調(diào)用應(yīng)放在try塊中。
D)對拋出的異常的處理必須放在try塊中
6、線程對象的生命周期中,不包括下面哪個(gè)狀態(tài)(B)。A)新建
B)睡眠
C)就緒
D)死亡
7、下面關(guān)于對象序列化(Serializable)的說法錯(cuò)誤的是(A)。
A)一個(gè)類實(shí)現(xiàn)接口Serializable就能使之序列化,必須實(shí)現(xiàn)該接口的write()方法。
B)一個(gè)對象序列化后,能通過對象流讀取對象或?qū)懭雽ο蟆?/p>
C)要存儲(chǔ)對象數(shù)據(jù),還需要建立一個(gè)ObjectOutputStream對象并使用其writeObject()方法。
D)序列化一個(gè)類,必須保證在恢復(fù)時(shí)java虛擬機(jī)能找到這個(gè)類的.class文件,否則將會(huì)出現(xiàn)ClassNotFoundException。
8、下面關(guān)于進(jìn)程、線程的說法錯(cuò)誤的是(C)。A)進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過程。一個(gè)進(jìn)程在其執(zhí)行過程中,可以產(chǎn)生多個(gè)線程——多線程,形成多條執(zhí)行線索。
B)線程是比進(jìn)程更小的執(zhí)行單位,是在一個(gè)進(jìn)程中獨(dú)立的控制流,即程序內(nèi)部的控制流。線程本身不能自動(dòng)運(yùn)行,棲身于某個(gè)進(jìn)程之中,由進(jìn)程啟動(dòng)執(zhí)行。C)Java中每個(gè)程序都有一個(gè)主線程,主線程自動(dòng)啟動(dòng),并在所有子線程結(jié)束后才能終止。
D)對于單處理器系統(tǒng),多個(gè)線程分時(shí)間片獲取CPU或其他系統(tǒng)資源來運(yùn)行。對于多處理器系統(tǒng),線程可以分配到多個(gè)處理器中,從而真正的并發(fā)執(zhí)行多任務(wù)。
9、下面的程序段創(chuàng)建了BufferedReader類的對象in,以便讀取本機(jī)c盤my文件夾下的文件1.txt。File構(gòu)造函數(shù)中正確的路徑和文件名的表示是(C)。
File f=new File(填代碼處);file=new FileReader(f);in=new BufferedReader(file);A)“./1.txt”
B)“../my/1.txt”
C)“c:my1.txt”
D)“c: my1.txt”
10、下面關(guān)于java中輸入/輸出流的說法錯(cuò)誤的是(C)。
A)FileInputStream與FileOutputStream類用讀、寫字節(jié)流。B)Reader與Writer類用來讀、寫字符流。
C)RandomAccessFile是單純的輸入或輸出流。D)File類用來處理與文件相關(guān)的操作。
11、以下程序段執(zhí)行后將有(B)個(gè)字節(jié)被寫入到文件afile.txt中。
try{
FileOutputStream fos=new FileOutputStream(“afile.txt”);
DataOutputStream dos=new DataOutputStream(fos);
dos.writeInt(3);
dos.writeDouble(0.01);
dos.close();
fos.close();
}
catch(IOException e){
} A、16 B、12 C、8 D、2
12、閱讀以下程序段,假定服務(wù)器端和客戶端程序正常運(yùn)行無異常發(fā)生,請回答以下問題:
①描述程序功能。
②假定在客戶端輸入2.0,請寫出服務(wù)器端的輸出結(jié)果。//服務(wù)器端程序
import java.io.*;import java.net.*;public class Server
{ public static void main(String[] args)
{ try
{ ServerSocket serverSocket = new ServerSocket(8000);
Socket connectToClient = serverSocket.accept();
DataInputStream isFromClient = new DataInputStream(connectToClient.getInputStream());
DataOutputStream osToClient = new DataOutputStream(connectToClient.getOutputStream());
while(true)
{ double value = isFromClient.readDouble();
System.out.println(“value received from client: ” +value);
double result = value*value;
osToClient.writeDouble(result);
System.out.println(“result: ” + result);
}
}
catch(IOException ex)
{
System.err.println(ex);
} } } //客戶端程序 import java.io.*;import java.net.*;public class Client { public static void main(String[] args)
{ try
{
Socket connectToServer = new Socket(“l(fā)ocalhost”, 8000);
DataInputStream isFromServer = new DataInputStream(connectToServer.getInputStream());
DataOutputStream osToServer =
new DataOutputStream(connectToServer.getOutputStream());
while(true)
{ System.out.print(“Please enter a double value: ”);
double value=Double.parseDouble(new BufferedReader(new InputStreamReader(System.in),1).readLine());
osToServer.writeDouble(value);
double result = isFromServer.readDouble();
System.out.println(“result received from the server is ”+ result);
}
}
catch(IOException ex)
{
System.err.println(ex);
} }4.0 }
13、閱讀以下程序:
import java.io.*;
public class Reverse
{
public static void
main(String args[ ])
{
int
i , n =5;
int a[ ] = new int[5];
for(i = 0;i < n;i++)
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
a[i] = Integer.parseInt(br.readLine());
} catch(IOException e){ };
for(i = n-1;i >= 0;i--)
System.out.print(a[i]+“ ”);
System.out.println();
}
} 若輸入: 1 2 7 4 5 則以上程序段的輸出結(jié)果為
54721。
14、下面關(guān)于Applet的說法正確的是(B)。
A、Applet也需要main方法 B、Applet繼承自java.awt.Applet或javax.swing.JApplet C、Applet能訪問本地文件 D、Applet程序不需要編譯
第二篇:數(shù)據(jù)結(jié)構(gòu)(Java)復(fù)習(xí)題及答案 1緒論
一、單項(xiàng)選擇題
(B)1.計(jì)算機(jī)算法必須具備輸入、輸出和 等5個(gè)特性。A)可行性、可移植性和可擴(kuò)充性 B)可行性、確定性和有窮性 C)確定性、有窮性和穩(wěn)定性 D)易讀性、穩(wěn)定性和安全性
(C)2.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的 結(jié)構(gòu); A)存儲(chǔ) B)物理 C)邏輯 D)物理和存儲(chǔ)
(C)3.算法分析的目的是:
A)找出數(shù)據(jù)結(jié)構(gòu)的合理性 B)研究算法中的輸入和輸出的關(guān)系 C)分析算法的效率以求改進(jìn) D)分析算法的易懂性和文檔性
(A)4.算法分析的兩個(gè)主要方面是:
A)空間復(fù)雜性和時(shí)間復(fù)雜性 B)正確性和簡明性 C)可讀性和文檔性 D)數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
(C)5.計(jì)算機(jī)算法指的是:
A)計(jì)算方法 B)排序方法 C)解決問題的有限運(yùn)算序列 D)調(diào)度方法
6.?dāng)?shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)的(A)和(B)以及它們之間的相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的(C),設(shè)計(jì)出相應(yīng)的(D),從而確保經(jīng)過這些運(yùn)算后所得到的新結(jié)構(gòu)是(E)結(jié)構(gòu)類型。供選擇的答案
A.B: 1.理想結(jié)構(gòu) 2.抽象結(jié)構(gòu) 3.物理結(jié)構(gòu) 4邏輯結(jié)構(gòu) C.D.E: 1.運(yùn)算 2.算法 3.結(jié)構(gòu) 4.規(guī)則 5.現(xiàn)在的 6.原來的 解答:34126
7.(A)是描述客觀事物的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中被計(jì)算機(jī)程序加工處理的符號的結(jié)合。(B)是數(shù)據(jù)的基本單位,即數(shù)據(jù)結(jié)合中的個(gè)體。有時(shí)一個(gè)(B)由若干個(gè)(C)組成,在這種情況下,稱(B)為記錄。(C)是數(shù)據(jù)的最小單位。(D)是具有相同特性的數(shù)據(jù)元素的集合。(E)是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的結(jié)合。
被計(jì)算機(jī)加工的數(shù)據(jù)元素不是孤立無關(guān)的,它們彼此之間一般存在著某種聯(lián)系,通常將數(shù)據(jù)元素的這種聯(lián)系關(guān)系稱為(G)。算法的計(jì)算量和問題規(guī)模的聯(lián)系用(H)表示。供選擇的答案:
A-F: 1.數(shù)據(jù)元素 2.符號 3.記錄 4.文件 5.數(shù)據(jù) 6.數(shù)據(jù)項(xiàng) 7.數(shù)據(jù)對象 8.關(guān)鍵字 9.數(shù)據(jù)結(jié)構(gòu)
G: 1.規(guī)則 2.集合 3.結(jié)構(gòu) 4.運(yùn)算 H: 1.現(xiàn)實(shí)性 2.難度 3.復(fù)雜性 4.效率 解答:5167933
二、判斷題
1, 數(shù)據(jù)元素是數(shù)據(jù)的最小單位。
解答:錯(cuò),因?yàn)閿?shù)據(jù)元素是數(shù)據(jù)的基本單位,通常它是由若干個(gè)數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)項(xiàng)才是數(shù)據(jù)的最小單位。
2, 數(shù)據(jù)結(jié)構(gòu)是帶有結(jié)構(gòu)的數(shù)據(jù)元素的結(jié)合。解答:正確
3, 數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)在計(jì)算機(jī)中的映像(或表示)分別稱為存儲(chǔ)結(jié)構(gòu)、結(jié)點(diǎn)、數(shù)據(jù)域。解答:正確
4, 數(shù)據(jù)項(xiàng)是數(shù)據(jù)的基本單位。
解答:錯(cuò),因?yàn)閿?shù)據(jù)元素才是數(shù)據(jù)的基本單位
5, 數(shù)據(jù)的邏輯結(jié)構(gòu)是指各數(shù)據(jù)之間的邏輯關(guān)系,是用戶按使用需要而建立的。解答:正確
6, 數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計(jì)算機(jī)內(nèi)實(shí)際的存儲(chǔ)形式。解答:正確
三、簡答題
1、簡述下列概念:數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、線性結(jié)構(gòu)、非線性結(jié)構(gòu)。解答:
● 數(shù)據(jù):指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體。
● 數(shù)據(jù)元素:就是數(shù)據(jù)的基本單位,在某些情況下,數(shù)據(jù)元素也稱為元素、結(jié)點(diǎn)、頂點(diǎn)、記錄。數(shù)據(jù)元素有時(shí)可以由若干數(shù)據(jù)項(xiàng)組成。●數(shù)據(jù)項(xiàng)是不可分割的最小單位。
● 數(shù)據(jù)結(jié)構(gòu):指的是數(shù)據(jù)之間的相互關(guān)系,即數(shù)據(jù)的組織形式。一般包括三個(gè)方面的內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算。● 邏輯結(jié)構(gòu):指數(shù)據(jù)元素之間的邏輯關(guān)系。
● 存儲(chǔ)結(jié)構(gòu):數(shù)據(jù)元素及其關(guān)系在計(jì)算機(jī)存儲(chǔ)器內(nèi)的表示,稱為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。
● 線性結(jié)構(gòu):數(shù)據(jù)邏輯結(jié)構(gòu)中的一類。它的特征是若結(jié)構(gòu)為非空集,則該結(jié)構(gòu)有且只有一個(gè)開始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn),并且所有結(jié)點(diǎn)都有且只有一個(gè)直接前趨和一個(gè)直接后繼。線性表就是一個(gè)典型的線性結(jié)構(gòu)。棧、隊(duì)列、串等都是線性結(jié)構(gòu)。
● 非線性結(jié)構(gòu):數(shù)據(jù)邏輯結(jié)構(gòu)中的另一大類,它的邏輯特征是一個(gè)結(jié)點(diǎn)可能有多個(gè)直接前趨和直接后繼。數(shù)組、廣義表、樹和圖等數(shù)據(jù)結(jié)構(gòu)都是非線性結(jié)構(gòu)。
2、按增長率由小至大的順序排列下列各函數(shù):
2100,(3/2)n,(2/3)n,nn ,n0.5 , n!,2n,lgn ,nlgn, n(3/2)解答:
常見的時(shí)間復(fù)雜度按數(shù)量級遞增排列,依次為:常數(shù)階0(1)、對數(shù)階0(log2n)、線性階0(n)、線性對數(shù)階0(nlog2n)、平方階0(n2)、立方階0(n3)、k次方階0(nk)、指數(shù)階0(2n)。
先將題中的函數(shù)分成如下幾類: 常數(shù)階:2100 對數(shù)階:lgn K次方階:n0.5、n(3/2)
指數(shù)階(按指數(shù)由小到大排):nlgn、(3/2)n、2n、n!、nn
注意:(2/3)^n由于底數(shù)小于1,所以是一個(gè)遞減函數(shù),其數(shù)量級應(yīng)小于常數(shù)階。根據(jù)以上分析按增長率由小至大的順序可排列如下:
(2/3)n < 2100 < lgn < n0.5 < n(3/2)< nlgn <(3/2)n < 2n < n!< nn
3、試舉一個(gè)數(shù)據(jù)結(jié)構(gòu)的例子、敘述其邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、運(yùn)算三個(gè)方面的內(nèi)容。解答:略
4、常用的存儲(chǔ)表示方法有哪幾種? 解答:順序和鏈?zhǔn)剑÷?00字
5、設(shè)有兩個(gè)算法在同一機(jī)器上運(yùn)行,其執(zhí)行時(shí)間分別為100n2和2n,要使前者快于后者,n至少要多大? 解答:
6、算法的時(shí)間復(fù)雜度僅與問題的規(guī)模相關(guān)嗎? 解答:是
第一章 作業(yè)
1.任何計(jì)算機(jī)系統(tǒng)的主存可以看作是一個(gè)一維數(shù)組,多維數(shù)組實(shí)際存儲(chǔ)仍是一組連續(xù)單元。請從數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的角度分析? 答:通過一個(gè)下標(biāo)計(jì)算公式將二維數(shù)組的下標(biāo)(i,j)映成一維數(shù)組的下標(biāo)。例圖b,下標(biāo)=4×(J—l)十I
2.選擇解決某種問題的最佳數(shù)據(jù)結(jié)構(gòu)的標(biāo)準(zhǔn)是什么? 1)算法所需要的時(shí)間;
①程序運(yùn)行時(shí)所需輸入的數(shù)據(jù)總量; ②對源程序進(jìn)行編譯所需的時(shí)間; ③計(jì)算機(jī)執(zhí)行每條指令所需的時(shí)間;
④程序中的指令重復(fù)執(zhí)行的次數(shù)(數(shù)據(jù)結(jié)構(gòu)中討論算法時(shí)的重點(diǎn))2)所需的存儲(chǔ)空間量。
3.有一疊撲克脾,在計(jì)算機(jī)中存儲(chǔ)這一疊撲克牌的內(nèi)容(信息)答:用一個(gè)結(jié)點(diǎn)表示一張牌,每張撲克牌的內(nèi)容包括牌的正反面(0、1)、花色(梅花
1、方塊
2、紅心
3、黑桃4)、點(diǎn)數(shù)、名稱、下一張牌 邏輯結(jié)構(gòu)是線性表;存儲(chǔ)結(jié)構(gòu)可以用鏈表或者順序表表示
I=1執(zhí)行n次
4、語句S的執(zhí)行次數(shù)(B)
I=2執(zhí)行n-1次
(1)for(i=1;i<=n-1;i++)
I=n-1執(zhí)行2次
for(j=n;j>=i;j--)n+(n-1)+………..2
S;(A)n(n+2)/2(B)
(n-1)(n+2)/2
(C)
n(n+1)/2(D)
(n-1)(n+2)(2)I=0;
(A)
Do{ J=I;Do{ S;
J++;
}while(j<=n);I++;
}while(i<=n);(A)(n+2)(n+1)/2(B)
n(n-1)/2
(C)
n!(D)
n2
5、計(jì)算下面程序的時(shí)間復(fù)雜度(1)for(i=1;i<=m;i++)
(C)
for(j=1;j<=n;j++)
A[i][j]=i*j;(A)
O(m2)(B)
O(n2)
(C)
O(m*n)(D)
O(m+n)
(2)I=0;
(A)
s=0;while(s<=n){ I++;S+=I;}
(3)語句S的時(shí)間復(fù)雜度為O(1),(D)for(i=1;i<=n-1;i++)
for(j=n;j>=i;j--)
S;(A)O(n2/2)(B)
O((n-1)(n+2)/2)
(C)
O(n2+n)(D)O(n2)
同題4(1)
S=1+2+3。。。。X=n X為執(zhí)行次數(shù)
I=0,j 0~n,執(zhí)行n+1次 I=1,j 1~n,執(zhí)行n次 I=n,j n~n,執(zhí)行1次(n+1)+………..1
x(x?1)?n2x2?x?2n?0x??1?1?8n2(A)
O(n)(B)O(2n)
(C)
O(n)(D)
O(n2)
6、寫出下面程序的時(shí)間復(fù)雜度(1)for(i=1;i<=n,i++)
for(j=1;j<=i,j++)for(k=1;k<=j,k++)x+=delta;
1+(1+2)+(1+2+3)…..(1+2+….n)
答:O(n3)
(2)i=1;j=0;while(i+j<=n){ if(i>j)j++;else i++;
} 答:O(n)
把(i+j)看成整體,每次遞增1,頻率n
第三篇:2013-2014-1學(xué)期企業(yè)Java復(fù)習(xí)題綱
企業(yè)Java與電子商務(wù)復(fù)習(xí)題綱
一、題目類型
共有名詞解釋、選擇題、程序閱讀填空題、簡答題和程序設(shè)計(jì)題共5種題型。
二、考點(diǎn)
1、掌握在JavaEE體系中,可以用來應(yīng)對超大用戶量訪問的相關(guān)技術(shù)。
2、熟記注解、控制反轉(zhuǎn)、企業(yè)應(yīng)用程序包、部署描述符、Java命名目錄服務(wù)等概念及相應(yīng)英文表示。
3、了解常見的服務(wù)器中,那些支持完整的JavaEE規(guī)范,那些僅支持部分的JavaEE。
4、了解EJB模塊、EAR模塊、WEB模塊對應(yīng)的文件擴(kuò)展名以及它們之間的關(guān)系。
5、了解注解的定義形式,JDK提供的內(nèi)置注解的作用,注解參數(shù)的類型和取值。
6、了解EJB組件中的遠(yuǎn)程接口以及其中的商業(yè)方法參數(shù)、返回值等定義的規(guī)則,掌握實(shí)現(xiàn)類的編寫方法和相應(yīng)的注解使用規(guī)則。
7、了解EJB組件的調(diào)用原理,能夠?qū)懗鲈谄胀↗ava應(yīng)用程序、企業(yè)應(yīng)用程序客戶端、Servlet這些應(yīng)用中,通過JNDI查找或注入方式調(diào)用EJB組件的代碼。
8、了解EJB組件中注入數(shù)據(jù)源的目的,掌握會(huì)話Bean組件的注入使用規(guī)則。
9、了解EJB組件的本地接口中方法的調(diào)用規(guī)則。
10、了解JPA中的persistence.xml構(gòu)成和作用。
11、了解在JPA中,如何將掌握如何將現(xiàn)有表映射為實(shí)體類;理解那些表可以映射為實(shí)體類,那些表不能映射為實(shí)體類。掌握實(shí)體類的@Entity、@Id注解以及相關(guān)注解的使用規(guī)則。
12、了解實(shí)體類的持久化的過程和JPQL查詢的基本原理。掌握EntityManager和Query對象的獲取代碼,掌握通過EntityManager持久化實(shí)體類的代碼,掌握利用Query對象查詢數(shù)據(jù)的基本代碼,掌握利用Native Query處理不能映射為實(shí)體類的表的記錄插入方法。
13、了解實(shí)體中的關(guān)系映射中關(guān)系擁有方這一概念的含義,掌握如何利用JPA注解映射多對多關(guān)系。
14、掌握會(huì)話外觀模式。
15、了解JMS中基于隊(duì)列方式的消息發(fā)送、接受原理,掌握最簡單的文本消息的創(chuàng)建和接受代碼,理解消息Bean在JMS中的作用及其定義語法。
第四篇:java學(xué)習(xí)
.如何學(xué)習(xí)Java?
3.1 Java學(xué)習(xí)路線
3.1.1 基礎(chǔ)語法及Java原理基礎(chǔ)語法和Java原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當(dāng)危險(xiǎn)的。學(xué)習(xí)Java也是如此,必須要有扎實(shí)的基礎(chǔ),你才能在J2EE、J2ME領(lǐng)域游刃有余。參加SCJP(SUN公司認(rèn)證的Java程序員)考試不失為一個(gè)好方法,原因之一是為了對得起你交的1200大洋考試費(fèi),你會(huì)更努力學(xué)習(xí),原因之二是SCJP考試能夠讓你把基礎(chǔ)打得很牢靠,它要求你跟JDK一樣熟悉Java基礎(chǔ)知識(shí);但是你千萬不要認(rèn)為考過了SCJP就有多了不起,就能夠獲得軟件公司的青睞,就能夠獲取高薪,這樣的想法也是很危險(xiǎn)的。獲得“真正”的SCJP只能證明你的基礎(chǔ)還過得去,但離實(shí)際開發(fā)還有很長的一段路要走。
3.1.2 OO思想的領(lǐng)悟掌握了基礎(chǔ)語法和Java程序運(yùn)行原理后,我們就可以用Java語言實(shí)現(xiàn)面向?qū)ο蟮乃枷肓恕C嫦驅(qū)ο螅且环N方法學(xué);是獨(dú)立于語言之外的編程思想;是 CBD基于組件開發(fā)的基礎(chǔ);屬于強(qiáng)勢技術(shù)之一。當(dāng)以后因工作需要轉(zhuǎn)到別的面向?qū)ο笳Z言的時(shí)候,你會(huì)感到特別的熟悉親切,學(xué)起來像喝涼水這么簡單。
使用面向?qū)ο蟮乃枷脒M(jìn)行開發(fā)的基本過程是: ●調(diào)查收集需求。●建立用例模型。
●從用例模型中識(shí)別分析類及類與類之間的靜態(tài)動(dòng)態(tài)關(guān)系,從而建立分析模型。●細(xì)化分析模型到設(shè)計(jì)模型。●用具體的技術(shù)去實(shí)現(xiàn)。●測試、部署、總結(jié)。
3.1.3 基本API的學(xué)習(xí)進(jìn)行軟件開發(fā)的時(shí)候,并不是什么功能都需要我們?nèi)?shí)現(xiàn),也就是經(jīng)典名言所說的“不需要重新發(fā)明輪子”。我們可以利用現(xiàn)成的類、組件、框架來搭建我們的應(yīng)用,如SUN公司編寫好了眾多類實(shí)現(xiàn)一些底層功能,以及我們下載過來的JAR文件中包含的類,我們可以調(diào)用類中的方法來完成某些功能或繼承它。那么這些類中究竟提供了哪些方法給我們使用?方法的參數(shù)個(gè)數(shù)及類型是?類的構(gòu)造器需不需要參數(shù)?總不可能SUN公司的工程師打國際長途甚至飄洋過海來告訴你他編寫的類該如何使用吧。他們只能提供文檔給我們查看,Java DOC文檔(參考文獻(xiàn)4.4)就是這樣的文檔,它可以說是程序員與程序員交流的文檔。基本API指的是實(shí)現(xiàn)了一些底層功能的類,通用性較強(qiáng)的API,如字符串處理/輸入輸出等等。我們又把它成為類庫。熟悉API的方法一是多查Java DOC文檔(參考文獻(xiàn)4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。
3.1.4 特定API的學(xué)習(xí)Java介入的領(lǐng)域很廣泛,不同的領(lǐng)域有不同的API,沒有人熟悉所有的API,對一般人而言只是熟悉工作中要用到的API。如果你做界面開發(fā),那么你需要學(xué)習(xí)Swing/AWT/SWT等API;如果你進(jìn)行網(wǎng)絡(luò)游戲開發(fā),你需要深入了解網(wǎng)絡(luò)API/多媒體API/2D3D等;如果你做WEB開發(fā),就需要熟 悉Servlet等API啦。總之,需要根據(jù)工作的需要或你的興趣發(fā)展方向去選擇學(xué)習(xí)特定的API。
3.1.5 開發(fā)工具的用法在學(xué)習(xí)基礎(chǔ)語法與基本的面向?qū)ο蟾拍顣r(shí),從鍛煉語言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時(shí)候不要急于上手JBuilder/Eclipse等集成開發(fā)環(huán)境,以免過于關(guān)注IDE的強(qiáng)大功能而分散對Java技術(shù)本身的注意力。過了這一階段你就可以開始熟悉 IDE了。程序員日常工作包括很多活動(dòng),編輯、編譯及構(gòu)建、調(diào)試、單元測試、版本控制、維持模型與代碼同步、文檔的更新等等,幾乎每一項(xiàng)活動(dòng)都有專門的工具,如果獨(dú)立使用這些工具的話,你將會(huì)很痛苦,你需要在堆滿工具的任務(wù)欄上不斷的切換,效率很低下,也很容易出錯(cuò)。在JBuilder、Eclipse等IDE中已經(jīng)自動(dòng)集成編輯器、編譯器、調(diào)試器、單元測試工具JUnit、自動(dòng)構(gòu)建工具ANT、版本控制工具CVS、DOC文檔生成與更新等等,甚至可以把UML建模工具也集成進(jìn)去,又提供了豐富的向?qū)椭煽蚣艽a,讓我們的開發(fā)變得更輕松。應(yīng)該說IDE發(fā)展的趨勢就是集成軟件開發(fā)中要用到的幾乎所有工具。從開發(fā)效率的角度考慮,使用IDE是必經(jīng)之路,也是從一個(gè)學(xué)生到一個(gè)職業(yè)程序員轉(zhuǎn)變的里程碑。Java開發(fā)使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder 占有的市場份額是最大的。JBuilder在近幾年來一直是Java集成開發(fā)環(huán)境中的霸主,它是由備受程序員尊敬的Borland公司開發(fā),在硝煙彌漫的 Java IDE大戰(zhàn)中,以其快速的版本更新?lián)魯BM的Visual Age for Java等而成就一番偉業(yè)。IBM在Visual Age for Java上已經(jīng)無利可圖之下,干脆將之貢獻(xiàn)給開源社區(qū),成為Eclipse的前身,真所謂“柳暗花明又一村”。浴火重生的Eclipse以其開放式的插件擴(kuò)展機(jī)制、免費(fèi)開源獲得廣大程序員(包括幾乎所有的骨灰級程序員)的青睞,極具發(fā)展?jié)摿Α?/p>
3.1.6 學(xué)習(xí)軟件工程 對小型項(xiàng)目而言,你可能認(rèn)為軟件工程沒太大的必要。隨著項(xiàng)目的復(fù)雜性越來越高,軟件工程的必要性才會(huì)體現(xiàn)出來。參見“軟件開發(fā)學(xué)習(xí)路線”小節(jié)。
3.2學(xué)習(xí)要點(diǎn) 確立的學(xué)習(xí)路線之后,我們還需要總結(jié)一下Java的學(xué)習(xí)要點(diǎn),這些要點(diǎn)在前文多多少少提到過,只是筆者覺得這些地方特別要注意才對它們進(jìn)行匯總,不要嫌我婆婆媽媽啊。
3.2.1勤查API文檔當(dāng)程序員編寫好某些類,覺得很有成就感,想把它貢獻(xiàn)給各位苦難的同行。這時(shí)候你要使用“Javadoc”工具(包含在JDK中)生成標(biāo)準(zhǔn)的Java DOC文檔,供同行使用。J2SE/J2EE/J2ME的DOC文檔是程序員與程序員交流的工具,幾乎人手一份,除了菜鳥之外。J2SE DOC文檔官方下載地址:http://Java.sun.com/j2se/1.5.0/download.jsp,你可以到google搜索CHM版本下載。也可以在線查看:http://Java.sun.com/j2se/1.5.0/docs/api/index.html。對待DOC文檔要像毛主席語錄,早上起床念一遍,吃飯睡覺前念一遍。當(dāng)需要某項(xiàng)功能的時(shí)候,你應(yīng)該先查相應(yīng)的DOC文檔看看有沒有現(xiàn)成的實(shí)現(xiàn),有的話就不必勞神費(fèi)心了直接用就可以了,找不到的時(shí)候才考慮自己實(shí)現(xiàn)。使用步驟一般如下: ●找特定的包,包一般根據(jù)功能組織。●找需要使用類,類命名規(guī)范的話我們由類的名字可猜出一二。●選擇構(gòu)造器,大多數(shù)使用類的方式是創(chuàng)建對象。●選擇你需要的方法。
3.2.2 查書/google->寫代碼測試->查看源代碼->請教別人 當(dāng)我們遇到問題的時(shí)候該如何解決?這時(shí)候不要急著問別人,太簡單的問題,沒經(jīng)過思考的問題,別人會(huì)因此而瞧不起你。可以先找找書,到google中搜一下看看,絕大部分問題基本就解決了。而像“某些類/方法如何使用的問題”,DOC文檔就是答案。對某些知識(shí)點(diǎn)有疑惑是,寫代碼測試一下,會(huì)給你留下深刻的印象。而有的問題,你可能需要直接看 API的源代碼驗(yàn)證你的想法。萬不得已才去請教別人。
3.2.3學(xué)習(xí)開源軟件的設(shè)計(jì)思想 Java領(lǐng)域有許多源代碼開放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對這些工具、框架進(jìn)行分析,領(lǐng)會(huì)其中的設(shè)計(jì)思想,有朝一日說不定你也能寫一個(gè)XXX框架什么的,風(fēng)光一把。分析開源軟件其實(shí)是你提高技術(shù)、提高實(shí)戰(zhàn)能力的便捷方法。
3.2.4 規(guī)范的重要性 沒有規(guī)矩,不成方圓。這里的規(guī)范有兩層含義。第一層含義是技術(shù)規(guī)范,多到http://www.tmdps.cn下載JSRXXX規(guī)范,多讀規(guī)范,這是最權(quán)威準(zhǔn)確最新的教材。第二層含義是編程規(guī)范,如果你使用了大量的獨(dú)特算法,富有個(gè)性的變量及方法的命名方式;同時(shí),沒給程序作注釋,以顯示你的編程功底是多么的深厚。這樣的代碼別人看起來像天書,要理解談何容易,更不用說維護(hù)了,必然會(huì)被無情地掃入垃圾堆。Java編碼規(guī)范到此查看或下載http://Java.sun.com/docs/codeconv/,中文的也有,啊,還要問我在哪,請參考3.2.2節(jié)。
3.2.5 不局限于Java 很不幸,很幸運(yùn),要學(xué)習(xí)的東西還有很多。不幸的是因?yàn)橐獙W(xué)的東西太多且多變,沒時(shí)間陪老婆家人或女朋友,導(dǎo)致身心疲憊,嚴(yán)重者甚至導(dǎo)致抑郁癥。幸運(yùn)的是別人要搶你飯碗絕非易事,他們或她們需要付出很多才能達(dá)成心愿。Java不要孤立地去學(xué)習(xí),需要綜合學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、OOP、軟件工程、UML、網(wǎng)絡(luò)編程、數(shù)據(jù)庫技術(shù)等知識(shí),用橫向縱向的比較聯(lián)想的方式去學(xué)習(xí)會(huì)更有效。如學(xué)習(xí)Java集合的時(shí)候找數(shù)據(jù)結(jié)構(gòu)的書看看;學(xué)JDBC的時(shí)候復(fù)習(xí)數(shù)據(jù)庫技術(shù);采取的依然是“需要的時(shí)候再學(xué)”的原則。
4.結(jié)束語需要強(qiáng)調(diào)的是,學(xué)習(xí)軟件開發(fā)確實(shí)有一定的難度,也很辛苦,需要付出很多努力,但千萬不要半途而廢。本文如果能對一直徘徊在Java神殿之外的朋友有所幫助的話,筆者也欣慰了。哈哈,怎么聽起來老氣橫秋呀?沒辦法,在電腦的長期輻射之下,都快變成小老頭了。最后奉勸各位程序員尤其是MM程序員,完成工作后趕快遠(yuǎn)離電腦,據(jù)《胡播亂報(bào)》報(bào)道,電腦輻射會(huì)在白皙的皮膚上面點(diǎn)綴一些小黑點(diǎn),看起來鮮艷無比……
第五篇:JAVA總結(jié)專題
在這忙忙碌碌的這段時(shí)間里,經(jīng)過老師的輔導(dǎo),迅速的將一點(diǎn)沒有學(xué)的JAVA基礎(chǔ)搞定了!有了基礎(chǔ)學(xué)習(xí)還是好,萬事開頭難這句話說的太對了,學(xué)計(jì)算機(jī)語言我覺得記憶好的方法就是多打代碼,課前預(yù)習(xí),課堂上認(rèn)真聽講,把現(xiàn)學(xué)的方法把以前所做的作業(yè)用最簡便的方法再一次鞏固,創(chuàng)新最重要,在后續(xù)的學(xué)習(xí)中,得要加倍努力學(xué)習(xí)。
其實(shí)學(xué)java有不懂,要先自己思考。想清楚這句代碼是什么意思。為什么要寫在這,等等之類的。等你真的搞不明白的時(shí)候,就一定要向老師咨詢,不要感到有什么丟人的。因?yàn)椴粫?huì)是很正常的事。并不是每個(gè)人都是天才,一學(xué)就會(huì),一學(xué)就能運(yùn)用自如的。學(xué)java有一點(diǎn)是非常重要的,就是練習(xí)。一段代碼要不停的敲,多敲幾遍,尤其是自己不熟悉或者不熟練的代碼,更要敲。不要感覺到厭煩,其實(shí)我感覺敲代碼挺好玩的,并不是一件很枯燥的事。
老師平常布置的課后上機(jī)練習(xí)題一定要做,課后的練習(xí)題能夠讓你把新學(xué)到的知識(shí)鞏固一遍,能夠加深記憶,不會(huì)讓你在以后做題的時(shí)候感到?jīng)]一點(diǎn)思路。
當(dāng)感覺到不會(huì)的時(shí)候,千萬不要?dú)怵H,因?yàn)檫@很正常,現(xiàn)在的學(xué)習(xí)就是為了培養(yǎng)你有一個(gè)邏輯思維,為了以后開發(fā)軟件的時(shí)候有個(gè)完整,清晰的思路。
其實(shí),總體來說。學(xué)習(xí)java很快樂。尤其是當(dāng)你遇到一道自己不會(huì)的題,然后,又通過自己的努力解決了,那時(shí)候,那種心情不是用言語來表達(dá)的。就好像你遇到一個(gè)數(shù)學(xué)難題,自己解決了之后那種成就感一樣。
學(xué)java的時(shí)候一定要,放松心情,輕輕松松的來學(xué),隨時(shí)讓自己快樂著,這樣能夠讓你能夠更快的接受java,千萬不要有什么心理負(fù)擔(dān),因?yàn)閖ava的特點(diǎn)之一就是--簡單易懂。只要自己努力到了,就一定能夠?qū)W好java。
學(xué)完了JAVA今天我們用項(xiàng)目案例:迷你DVD管理器來鞏固了我們所學(xué)的所有內(nèi)容,通過這項(xiàng)目的操練,首先,1、項(xiàng)目用到了會(huì)使用順序、分支、循環(huán)、跳轉(zhuǎn)語句編寫程序,2、要會(huì)使用數(shù)組、操作字符串,3、會(huì)使用帶參的方法;
4、會(huì)定義類、創(chuàng)建和使用對象,看到這些腦袋里一片迷茫啊!不知道怎樣寫,然后想到早寫晚寫都一樣,就照著書上寫起來了,到現(xiàn)在還是弄不懂的就是那個(gè)對象數(shù)組,不知道怎樣去理解,抽象的把我抽暈了,有望老師來給我們補(bǔ)補(bǔ)這一章,在實(shí)現(xiàn)DVD的業(yè)務(wù)處理時(shí),計(jì)算時(shí)差還是不懂,照著書上打了一遍,可還是得不到想要的結(jié)果,經(jīng)過網(wǎng)上的搜尋與老師講解,現(xiàn)在已略懂一二了,在做完這項(xiàng)目后,真不知道當(dāng)時(shí)是怎樣敲出來的,難道這就是所說的靈感!感覺很高興,現(xiàn)在已習(xí)慣了代碼報(bào)錯(cuò),其實(shí)代碼報(bào)錯(cuò)是一件值得鼓勵(lì)的事,因?yàn)闆]有錯(cuò)就覺得自己什么都懂了,在學(xué)習(xí)中相信每一個(gè)人都遇到過挫折吧!但一定要想方法戰(zhàn)勝挫折!我的戰(zhàn)勝挫折方法就是不懂思考后還不懂就問,懂了以后就筆記本記下當(dāng)時(shí)的解決方案!學(xué)習(xí)剛開始!后面的路很長,慢慢的去磨煉了!總結(jié)完畢!