20145204 《Java程序设计》第9周学习总结
教材学习内容总结
JDBC
Java语言访问数据库的一种规范,是一套API。JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。
- 注册Driver操作
DriverManager.registerDriver(new com.mysql.jdbc.Driver)
与数据库建立连接的标准方法是调用DriverManager.getConnection方法。该方法接受含有某个URL的字符串。DriverManager类(即所谓的JDBC管理层)将尝试找到可与那个URL所代表的数据库进行连接的驱动程序。DriverManager类存有已注册的Driver类的清单。当调用方法getConnection时,它将检查清单中的每个驱动程序,直到找到可与URL中指定的数据库进行连接的驱动程序为止。Driver的方法connect使用这个URL来建立实际的连接。
- 取得Connection操作对象
要取得操作对象可以通过DriverManager的getConnection():
Connection conn =DriverManager.getConnection(jdbcUrl,username,password);
- 关闭Connection操作对象
以下是撰写一个简单的实例,检测是否联机数据库并取得Connection连接,结果失败了。
java反射机制
AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
class与.class文档
Class
Class类本身表示Java对象的类型,我们可以通过一个Object(子)对象的getClass方法取得一个对象的类型,此函数返回的就是一个Class类。
得到Class类的方法:
运用static method Class.forName()(最常被使用)
Class c2 = Class.forName ("java.awt.Button");
Class c3 = Class.forName ("java.util.LinkedList$Entry");
Class c4 = Class.forName ("I");
运用.class 语法
Class c1 = String.class;
.class
在我们得到一个类的Class类对象之后,就可以操作class对象的公开方法取得基本类信息。可以通过object的getclass()方法,或者是通过.class常量取得每个对象的class对象。
Java真正需要某个类时才会加载对应的.class文档,,而非在程序启动就加载所有类。java.lang.class的实例代表Java应用程序运行时加载的.class文档。
以下是测试类验证的结果:
在取得class对象后,就可以操作class对象的公开方法取得基本类信息。
声明Some参考名称不会载入Some.class文档,使用new生成对象时才会加载类。课本SomeDemo执行结果如下:
java动态生成对象
动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。Java语言允许使用者在运行时加载、探知、使用编译期间完全未知的classes,所以我们说Java是“准动态”语言。
JAVA的动态代理
代理模式
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
按照代理的创建时期,代理类可以分为两种。
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
可定义一个hello接口:
public Interface Hello{
void hello(String name);
}
有个hellospeaker类操作hello接口:
public class HelloSpeaker implements Hello{
public void hello(String name){
System.out.printf("哈喽,%s%n",name);
}
动态代理:在程序运行时,运用反射机制动态创建而成。
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/1 | 20/20 | |
第二周 | 200/300 | 1/2 | 30/50 | |
第三周 | 300/600 | 1/3 | 28/78 | |
第四周 | 400/1000 | 1/4 | 20/98 | |
第五周 | 350/1350 | 1/5 | 30/128 | |
第六周 | 450/1800 | 2/6 | 32/ 160 | |
第七周 | 350/2150 | 2/8 | 20/ 180 | |
第八周 | 250/2400 | 2/10 | 22/202 | |
第九周 | 400/2800 | 2/12 | 20/222 |