20145314郑凯杰 《Java程序设计》第9周学习总结
教材学习内容总结
第十六章
①JDBC(Java DataBase Connectivity
)
即java数据库连接,是一种用于执行SQL语句的Java API
。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
插图1:
对于JDBC,其使用有两个步骤,一是首先进行驱动程序的装载,再进行连接的建立。
驱动的四种类型:
- JDBC-ODBC Bridge Driver
- Native API Driver 提供原生链接库
- JDBC-Net Driver 将方法调用转换为特定的网络协议调用
- Native Protocal Driver
此分类是按照操作方式来分类的。
建立数据库的步骤:
- 注册
Driver
的操作对象 - 取得
Connection
操作对象 - 关闭
connection
操作对象
(1)Statemet和Resultset
接下来执行SQL的话,必须取得java.sql.Statement
操作对象。
可使用Connection
的createStatemet()
建立Statemet
对象。
Resultset
的next()
可通过返回true
或者false
表示是否有下一笔数据。
(2)PreparedStatement和CallableStatement
使用Connection
的preparedStatement()
方法建立预先编译(Precompile
)的SQL语句,当参数会变动的部分,先指定“?”这个占位字符。
②RowSet
JDBC定义了javax.sql.RowSet
接口,用以代表数据的列集合。这里的数据并不一定是数据库中的数据,可以是试算表数据、XML数据或任何具有行集合概念的数据源。
RowSet
是ResultSet
的子接口,所以具有ResultSet
的行为,可以使用RowSet
对行集合进行增删查改,RowSet
也新增了一些行为,如通过setCommand()
设置查询命令、通过execute()
执行查询命令以填充数据等。
第十七章
①运用反射
JAVA真正需要某个类时才会加载对应的.class
文档,不是程序启动时就加载所有类。
通过Object
的getClass()
方法,或者.class
常量取得每个对象对应的class
对象,如果是基本类型,也可以使用对应的打包类加上.TYPE
取得Class
对象。例如,Integer.TYP
E可取得代表int
的Class
对象。
使用class.forName()
的方法来实现动态加载类。
java.lang.reflect.Method
实例是方法的代表对象,可以使用invoke()
方法来动态调用指定的方法。
②了解类加载器(ClassLoader
)
JVM将类加载过程分为三个步骤:装载(Load
),链接(Link
)和初始化(Initialize
)链接又分为三个步骤。
插图2:
另外,类的加载是什么意思呢? 指的是将类的.class
文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的Java.lang.Class
对象,用来封装类在方法区类的对象
第十八章
①自定义泛型
在定义泛型时,使用extends
限定指定T实际类型时,必须是某类的子类。
共变性(Covariance
):,B
是A
的子类,Node<B>
可视为一种Node<A>
,称Node
具有共变性。
通配字符“?”与extends
限制T的类型,只能通过T声明的名称取得对象指定给Object
,或将T声明的名称指定为null
。
②自定义枚举
enum
定义了特殊的类,继承自java.lang.Enum
。
enum
是个抽象类,无法直接实例化。
enum
操作Comparable
接口,ordinal
的值是会使用enum
枚举的成员顺序。equals()
与hashCode()
基本上继承了Object
的行为,但被标示为final
。
可以使用values()
的方法,将内部维护Action
枚举实例的数组复制后返回。
代码调试中的问题和解决过程
本周学习的重点在于对概念的理解,说实话这几张的内容已经可以作为选学内容了。在本学期的学习中,应该是不会用到了,所以本周我把精力会主要放在之前的复习上。而对这些章节的内容,会做到如果接触到的话一定能反应过来。
其他(感悟、思考等,可选)
JAVA厚厚的一本书终于学完了,突然觉得自己好有成就感,短短几周就学完了这样一门语言。有着与好友们一起开发程序梦想的我!终于可以用自己的双手开始实现这一想法了,真的很开心。多少个日日夜夜,对着屏幕敲代码,心中烦躁得不行,口中念骂着这语言为啥这么复杂,现在居然已经学完了。真是松了一口气,但是下一周,要把理论付诸实践!开始干吧!不要浪费每一秒青春的时间,用代码写出想写的东西!
现在也对得起那句话了:积极主动敲代码,没日没夜学加瓦。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 1/2 | 20/20 | |
第二周 | 700/600 | 2/4 | 38/38 | |
第三周 | 900/1100 | 1/7 | 60/60 | |
第四周 | 913/1350 | 1/9 | 90/90 | |
第六周 | 764/1350 | 1/9 | 90/90 | |
第七周 | 314/1350 | 1/9 | 60/120 | |
第八周 | 293/1350 | 1/9 | 60/120 | |
第九周 | xxx/1350 | 1/9 | 75/120 |