Java 8程序设计及实验
温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>
- ISBN:9787302505747
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:364
- 出版时间:2018-09-01
- 条形码:9787302505747 ; 978-7-302-50574-7
本书特色
本书由多位长期从事Java教学的教师根据其实际授课经验编写,从教师和学生的角度来编写教材,并在教学环境中加以试用,不断修改完善。本书配有习题解答、电子课件及源程序。
内容简介
本书是讲述Java程序设计的教材,在一般知识的基础上增加了JDK 8中的新功能,包括在接口中声明静态方法、默认方法,还有Lambda表达式、方法引用、Stream。在图形界面部分,去掉了介绍Applet的内容,增加了用JavaFX实现图形界面的内容及案例。本书由多位长期从事Java教学的教师根据实际授课经验编写而成,通过在教学环境中的试用,具有较好的教学效果。本书适合作为普通高等学校教材使用,为了便于学习,本书配有习题解答、电子课件及源程序,在本书附录中还有相应的授课计划和实验项目,为教师备课、授课和安排实验环节的项目提供参考,为读者的学习提供引导。
目录
目录
**部分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
节选
第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();
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥19.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
基于3D打印技术的产品创新设计方法
¥45.8¥88.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0