-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
Java 8程序設計及實驗 版權信息
- ISBN:9787302505747
- 條形碼:9787302505747 ; 978-7-302-50574-7
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
Java 8程序設計及實驗 本書特色
本書由多位長期從事Java教學的教師根據其實際授課經驗編寫,從教師和學生的角度來編寫教材,并在教學環境中加以試用,不斷修改完善。本書配有習題解答、電子課件及源程序。
Java 8程序設計及實驗 內容簡介
本書是講述Java程序設計的教材,在一般知識的基礎上增加了JDK 8中的新功能,包括在接口中聲明靜態方法、默認方法,還有Lambda表達式、方法引用、Stream。在圖形界面部分,去掉了介紹Applet的內容,增加了用JavaFX實現圖形界面的內容及案例。本書由多位長期從事Java教學的教師根據實際授課經驗編寫而成,通過在教學環境中的試用,具有較好的教學效果。本書適合作為普通高等學校教材使用,為了便于學習,本書配有習題解答、電子課件及源程序,在本書附錄中還有相應的授課計劃和實驗項目,為教師備課、授課和安排實驗環節的項目提供參考,為讀者的學習提供引導。
Java 8程序設計及實驗 目錄
目錄
**部分Java程序設計第1章Java入門3
1.1Java簡介3
1.1.1Java的由來3
1.1.2Java的特點4
1.2Java平臺5
1.2.1Java平臺的構成5
1.2.2Java平臺的版本6
1.2.3JRE和JDK7
1.2.4JDK的下載與安裝8
1.2.5環境變量的配置9
1.3Java程序的開發流程10
1.3.1Java程序的種類10
1.3.2Java程序的開發流程10
1.4小試身手11
1.5Java API文檔的使用12
1.6Java Doc文檔13
1.6.1語法13
1.6.2標簽簡介14
1.6.3生成Java Doc文檔15
本章小結16
習題117第2章Java基本語法18
2.1原始類型18
2.1.1整數類型19
2.1.2實數類型21
2.1.3字符類型21
2.1.4布爾類型22
2.1.5強制類型轉換222.2引用類型23
2.3String23
2.4聲明變量23
2.4.1變量的賦值24
2.4.2變量的默認值24
2.4.3常量24
2.4.4變量作用范圍24
2.5命名25
2.6運算符與表達式26
2.6.1算術運算符26
2.6.2關系運算符27
2.6.3邏輯運算符27
2.6.4位運算符29
2.6.5賦值運算符31
2.6.6其他運算符31
2.7數組32
2.7.1一維數組32
2.7.2多維數組33
本章小結35
習題235第3章流程控制36
3.1分支語句36
3.1.1if…else語句36
3.1.2switch語句38
3.2循環語句40
3.2.1while語句40
3.2.2do…while語句41
3.2.3for語句42
3.2.4for…each語句43
3.2.5嵌套循環44
3.2.6循環語句對比45
3.3跳轉語句45
3.3.1break語句45
3.3.2continue語句47
3.3.3return語句48
本章小結49
習題349第4章面向對象編程51
4.1面向對象編程概述51
4.2類的定義52
4.2.1類的基本結構52
4.2.2成員變量和局部變量54
4.2.3成員方法55
4.2.4Overloading62
4.2.5構造方法63
4.2.6this65
4.3對象66
4.3.1對象的創建66
4.3.2對象的使用68
4.3.3對象的清除*68
4.4static69
4.4.1類變量69
4.4.2類方法71
4.4.3靜態語句塊71
4.5包*72
4.5.1包的定義73
4.5.2編譯和運行包中的類73
4.5.3import語句75
4.6訪問權限修飾符76
4.6.1private76
4.6.2friendly77
4.6.3protected77
4.6.4public78
4.7常用類78
4.7.1Object類79
4.7.2String類與StringBuffer類80
4.7.3數值包裝類83
4.7.4Math類85
4.7.5Random類*86
4.7.6處理日期的類*87
4.7.7Arrays類89
本章小結91
習題491第5章繼承93
5.1繼承的語法93
5.2成員變量的隱藏和方法的覆蓋94
5.3super95
5.4final96
5.5多態97
5.6繼承與組合99
5.7初始化順序*102
本章小結105
習題5105第6章抽象類、接口和內部類106
6.1抽象類106
6.1.1聲明抽象類106
6.1.2繼承抽象類106
6.1.3抽象類的應用106
6.2接口109
6.2.1聲明接口109
6.2.2實現接口110
6.2.3default方法和static方法110
6.3內部類111
6.3.1什么是內部類111
6.3.2匿名內部類112
6.4Lambda表達式114
6.4.1定義114
6.4.2常見函數式接口116
6.4.3方法引用116
本章小結117
習題6117第7章枚舉*118
本章小結120
習題7120第8章異常121
8.1異常121
8.1.1異常信息121
8.1.2異常的處理122
8.1.3異常的類型124
8.2finally124
8.3throws125
8.4自定義異常*125
8.5異常進一步的處理126
8.5.1在何處處理異常126
8.5.2同時處理父、子類異常127
8.5.3同時處理多個異常128
本章小結129
習題8129第9章輸入輸出130
9.1File130
9.1.1創建一個File對象130
9.1.2訪問File對象的方法131
9.1.3列出目錄下的文件132
9.1.4列出目錄下滿足條件的文件132
9.1.5Path135
9.2輸入流136
9.2.1字節輸入流136
9.2.2try…with…resources語句141
9.2.3字符輸入流141
9.2.4Scanner145
9.2.5從控制臺輸入147
9.3輸出流150
9.3.1字節輸出流151
9.3.2字符輸出流154
9.3.3格式化輸出156
9.4數字字節輸入輸出流157
9.4.1DataInputStream和DataOutputStream157
9.4.2RandomAccessFile*158
9.5對象輸入輸出流*160
9.6壓縮、解壓縮流*161
9.6.1壓縮162
9.6.2解壓縮163
9.7讀寫Excel文件*164
9.7.1讀取已有的工作簿164
9.7.2生成新的工作簿166
9.7.3修改已有的工作簿168
9.7.4應用168
9.8Files工具類171
本章小結172
習題9172第10章圖形用戶界面174
10.1AWT包與Swing包174
10.1.1輔助類176
10.1.2組件類176
10.1.3容器類176
10.2版面布局管理器180
10.2.1FlowLayout181
10.2.2BorderLayout182
10.2.3GridLayout184
10.2.4CardLayout*185
10.2.5無布局管理器186
10.3事件處理187
10.3.1事件處理機制187
10.3.2事件處理示例190
10.3.3事件適配器196
10.4Swing常用組件198
10.4.1標簽198
10.4.2按鈕199
10.4.3文本框203
10.4.4文本區205
10.4.5列表*205
10.4.6組合框*206
10.4.7對話框*211
10.4.8計時器*215
10.4.9菜單組件*215
10.5Swing組件應用217
10.5.1圖片瀏覽器217
10.5.2文本編輯器221
本章小結226
習題10226第11章JavaFX227
11.1JavaFX概述227
11.1.1JavaFX的發展227
11.1.2JavaFX架構圖227
11.2JavaFX程序228
11.2.1場景Scene228
11.2.2JavaFX應用程序的生命周期228
11.2.3JavaFX應用程序228
11.3Java FX布局229
11.3.1FlowPane229
11.3.2BorderPane230
11.3.3HBox232
11.3.4VBox233
11.3.5GridPane235
11.3.6StackPane236
11.4事件處理237
11.4.1事件238
11.4.2事件分發流程239
11.4.3事件處理240
11.5JavaFX UI組件247
11.5.1標簽247
11.5.2按鈕247
11.5.3文本框249
11.5.4文本區249
11.5.5菜單組件251
11.5.6文件選擇器253
11.6在UI控件上使用CSS257
11.6.1創建樣式257
11.6.2JavaFX CSS選擇器257
11.6.3美化UI控件258
11.6.4使用setStyle()方法設置樣式260
本章小結260
習題11260第12章JDBC261
12.1驅動程序下載262
12.2創建到數據庫的連接262
12.3使用Statement執行SQL語句263
12.3.1executeUpdate263
12.3.2executeQuery266
12.4使用PreparedStatement執行SQL語句267
12.4.1executeUpdate267
12.4.2executeQuery269
12.5事務*269
12.6得到ResultSet中的記錄數*272
12.6.1執行另一條SQL語句272
12.6.2操作游標272
12.7驗證登錄*273
本章小結274
習題12274第13章集合類*275
13.1用Java實現一個鏈式堆棧276
13.2List277
13.2.1自動包裝和解包279
13.2.2Stack280
13.3Set281
13.3.1SortedSet282
13.3.2equals()、hashCode()和Comparable283
13.3.3Comparator285
13.4Map286
13.4.1SortedMap289
13.4.2Properties289
13.5Stream292
13.5.1什么是Stream292
13.5.2常用方法292
本章小結294
習題13294第14章Java相關框架*295
14.1Spring295
14.1.1DI295
14.1.2JDBC297
14.1.3事務支持302
14.2Hibernate305
本章小結309
習題14310第二部分實驗實驗ⅠJDK安裝、配置及Java程序的編譯和運行313實驗ⅡJava基本語法313實驗ⅢJava的類繼承機制、接口314實驗ⅣJava的輸入機制315實驗ⅤJava的輸出機制315實驗Ⅵ綜合性程序設計——簡單學生信息管理系統(序列化版)*316實驗Ⅶ綜合性程序設計——簡單學生信息管理系統(GUI版)317實驗Ⅷ綜合性程序設計——簡單學生信息管理系統(數據庫版)318實驗Ⅸ綜合性程序設計——簡單學生信息管理系統(集合版)*319附錄附錄A進行輸入和輸出323附錄BSQL語句簡單介紹325
B.1Java中數據類型和SQL類型的對應關系325
B.2SQL中對表的操作325
B.3SQL中對表中記錄的操作325附錄CHsqldb使用指南328
C.1啟動Hsqldb數據庫服務器328
C.2用圖形界面管理Hsqldb數據庫服務器328
C.3編譯、運行JDBC程序329
C.4幾個SQL語句的例子329
C.5幾個JDBC的例子330附錄D連接SQL Server 2016 Express數據庫341附錄EEclipse使用指南343
E.1設置Workspace目錄343
E.2建立工程344
E.3編輯、編譯、運行Java類345
E.4調試349
E.5在工程中使用第三方類庫350
E.6使用技巧352附錄F使用Ant354
F.1下載、設置354
F.2定義property、target355
F.3編譯、運行Java程序356
F.4打包Java程序357
F.5啟動、管理、停止Hsqldb數據庫服務器357
F.6備份358
F.7在Eclipse使用Ant358附錄G授課計劃和方法359參考文獻364
Java 8程序設計及實驗 節選
第5章繼承 繼承是面向對象程序設計(OOP)的三大特征之一,描述了類不同抽象級別之間的關系: “is a”的關系,即“特殊與一般”的關系。換句話說,一般(父類)是特殊(子類)更高級別的抽象。子類可以繼承父類所有的非private類型的屬性和方法,也可以具有自己獨有的屬性和方法。通過類的繼承關系,使公共的特性能夠共享,提高了軟件的重用性。但在Java中只允許單繼承。 5.1繼承的語法 在Java中描述兩個類之間的繼承關系時,使用關鍵字extends,格式如下: class SubClass extends SuperClass{ … }其中SubClass為子類,SuperClass為父類(或超類)。 在第4章中定義了Person類: class Person{ private String name; private char sex='M'; Person(String name){ this.name=name; } Person(String name,char sex){ this.name=name; this.sex=sex; } public void show(){ String str="下面展示姓名和性別"; System.out.println(str); System.out.println("姓名: "+name+" 性別: "+sex); } }現在要定義一個學生類(Stu),由于“學生是人”,所以學生類和Person類之間是“is a”的關系,即“繼承”關系,那么就可以這樣來定義Stu類: 例5.1Stu類的定義(ch05\\Stu.java)。class Stu extends Person { long id; private String name;//僅為演示用,實際編程中無須聲明該變量 private char sex='M'; public Stu (String name, long id, char sex){ super(name,sex); this.id=id; } }前面講過子類可以繼承父類的非private類型的屬性和方法,在這個例子中可以看到: 雖然在Person類中定義了name、sex屬性,但它們是private類型的數據,如果Stu也想擁有這些屬性的話,就必須重新定義,不能繼承于父類,也可以定義這些屬性為protected;但show方法,在Person類中是以public的身份定義的,所以Stu類雖然沒有顯式地定義該方法,但卻擁有該方法,因為它繼承了父類的show()方法,編寫測試類如下: class UseStu{ public static void main(String\[\] args){ Stu s=new Stu("王強",20094140213L,'M'); s.show(); } }運行結果: 下面展示姓名和性別 姓名: 王強 性別: M另外,還可以在子類中定義子類獨有的屬性和方法,例如本例中的id。 在這里需要說明以下幾點: (1) 父類的構造函數不能被子類繼承。 (2) 子類不能繼承或訪問父類中的private屬性和方法。 (3) 父類中的friendly(包訪問權限)的屬性和方法只有在父類和子類在同一包中時,才能被子類繼承和訪問。 (4) 父類中由protected或public修飾的屬性和方法,都可以被子類繼承訪問(無論子類是否與父類在同一包中)。 5.2成員變量的隱藏和方法的覆蓋 當子類和父類中定義的成員變量的名字相同時,子類可以隱藏父類的成員變量。同樣,子類也可以通過方法重寫(或稱為覆蓋,Overriding)來隱藏從父類繼承的方法。方法覆蓋是指子類中定義的方法的頭部(方法的名字、返回類型、參數個數和類型)與父類的方法完全相同,而方法體可以不同。但在進行方法覆蓋時,請注意: 在覆蓋時訪問權限只能放大或相同,不能縮小;覆蓋方法不能拋出新的異常(關于異常,將在第8章介紹)。 例5.2成員變量的隱藏和方法的覆蓋(ch05\\OverriddingTest.java)。class Father{ String s="Father"; int i=1; public void f(){ System.out.println("Father s="+s); System.out.println("Father i="+i); } } class Child extends Father{ String s="Child";//隱藏了父類的成員變量s public void f(){//覆蓋了父類的f()方法,但訪問權限只能是public System.out.println("Child s="+s); System.out.println("Child i="+i); } } class OverriddingTest{ public static void main(String\[\] args){ Father f=new Father(); Childc=new Child(); f.f(); c.f(); } }運行結果:Father s=Father Father i=1 Child s=Child Child i=1方法覆蓋與方法重載的區別如下: 方法覆蓋發生在父類和子類之間,即子類重寫了父類的某個方法,子類中定義的方法的頭部(方法的名字、返回類型、參數個數和類型)與父類的方法完全相同,而方法體可以不同;重載是在同一類中出現的現象,是指一個類中可以有多個方法具有相同的名字,但這些方法的參數不同。 5.3super 如果想在子類中使用父類的非private類型的變量和方法(特別是被隱藏變量和方法),可以使用super關鍵字。例如,要在例5.2中訪問父類的變量s,就要使用super.s,請試驗在子類Child的f()方法中加入如下的代碼,查看輸出結果。System.out.println("Father s="+super.s); super.f();如果要在子類的構造方法中訪問父類的構造方法,也要使用super關鍵字,例如例5.1中的super(name,sex);但要注意,該調用語句必須出現在子類構造方法非注釋語句的**行。 注意: 如果在子類的構造方法中,沒有使用super調用父類的構造方法,編譯器將自動添加: super();即調用父類不帶參數的構造方法,此時就應保證父類中有不帶參數的構造方法(當父類未定義任何構造方法時,系統會自動合成;一旦父類定義了一個或多個構造方法,系統將不再提供默認的構造方法,必須手工定義),否則就會產生錯誤。如例5.1中,由于父類Person未定義無參的構造方法,所以必須用super(name,sex)顯式地調用父類中某個已定義的構造方法。 5.4final final關鍵字可以用來修飾類、方法、變量(包括成員變量和局部變量及方法中的參數)。 (1) 當final修飾類時,意味著該類不能被繼承,即該類不能有String類等子類。 例5.3final修飾類(ch05\\FinClass .java)。final class FinClass{//*終類 int i; FinClass(){ System.out.println("This is a final class."); } } class SubFinClass extends FinClass{//錯誤,不能從*終類繼承 }編譯時會出現下面的出錯信息: FinClass.java:7: 無法從*終 FinClass 進行繼承 class SubFinClass extends FinClass{(2) 當final修飾方法時,代表該方法不能被重寫。 (3) 當final修飾成員變量時,該變量可以理解為常量,必須賦以初值(可在聲明時賦值,或在類的構造方法中賦值),并且該變量的值不能再改變;當final修飾局部變量時,該局部變量只能被賦一次值;當final修飾方法中的參數時,該參數的值不能被改變。 例5.4final修飾方法和變量(ch05\\UseFinal.java)。class UseFinal{ final int i=1; final int j;//*終變量若不在聲明時賦值,就要在其所屬的類的構造方法中賦值 int k; UseFinal(){ j=2; } final void f(){//*終方法,在子類中不能被覆蓋 System.out.println("This is a final method."); } void g(){ //i++;錯誤,不能重新指定*終變量的值 //j++;錯誤,不能重新指定*終變量的值 k++; final String s="Hello "; //s="Hi";錯誤,當final修飾局部變量時,該變量只能被賦一次值 final String str; str="Java"; System.out.println(s+str+"i="+i+"j="+j+"k="+k); } void h(final int a){ //a++;錯誤,不能指定*終參數 System.out.println("a="+a); } public static void main(String\[\] args){ UseFinal uf=new UseFinal(); uf.f(); uf.g();
- >
我與地壇
- >
推拿
- >
我從未如此眷戀人間
- >
史學評論
- >
名家帶你讀魯迅:故事新編
- >
月亮虎
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)
- >
朝聞道