20145206《Java程序设计》第9周学习总结
2016-04-29 09:45
351 查看
20145206 《Java程序设计》第9周学习总结
教材学习内容总结
第十六章 整合数据库JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性。
厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型:
·Type 1:JDBC-ODBC Bridge Driver ·Type 2:Native API Driver ·Type 3:JDbc-Net Driver ·Type 4:Native Protocol Driver
取得联机等与数据库来源相关的行为规范在javax.sql.DataSource接口,实际如何取得Connection则由操作接口的对象来负责。
Connection是数据库连接的代表对象,接下来要执行SQL的话,必须取得java.sql.Statement对象,它是SQL描述的代表对象。可以使用Connection的createStatement()来建立Statement对象。
package cc.openhome; import static java.lang.System.out; import java.sql.*; public class ConnectionDemo { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); String jdbcUrl = "jdbc:mysql://localhost:3306/demo"; String user = "root"; String passwd = "openhome"; try(Connection conn = DriverManager.getConnection(jdbcUrl, user, passwd)) { out.printf("已%s数据库联机%n", conn.isClosed() ? "关闭" : "开启"); } } }
在使用Connection、Statement或ResultSet时,要将之关闭以释放相关资源。
如果有些操作只是SQL语句当中某些参数会有所不同,其余的SQL子句皆相同,则可以使用java.sql.PreparedStatement.可以使用Connection的preparedStatement()方法建立好一个预先编译的SQL语句,当中参数会变动的部分,先指定“?”这个占位字符。等到需要真正指定参数执行时,再使用相对应的setInt()、setString()等方法,指定“?”处真正应该有的参数。
第十七章 反射与类加载器
Java真正需要某个类时才会加载对应的.class文档,而非在程序启动就加载所有类。java.lang.Class的实例代表Java应用程序运行时加载的.class文档。可以通过Object的getClass()方法,或者通过.class常量取得每个对象对应的Class对象,如果是基本类型,也可以使用对应的打包类加上.TYPE取得Class对象。例如:Integer.TYPE可取得代表int的Class对象。
如果事先不知道类名称,可以利用Class.forName()动态加载.class文档,取得Class对象之后,利用其
newInstance()方法建立类实例。
java.lang.reflect.Method实例是方法的代表对象,可以使用
invoke()方法来动态调用指定的方法。
package cc.openhome; import static java.lang.System.out; public class ClassInfo { public static void main(String[] args) { Class clz = String.class; out.println("類別名稱:" + clz.getName()); out.println("是否為介面:" + clz.isInterface()); out.println("是否為基本型態:" + clz.isPrimitive()); out.println("是否為陣列物件:" + clz.isArray()); out.println("父類別名稱:" + clz.getSuperclass().getName()); } }
由同一类加载器载入的.class文档,只会有一个Class实例。如果同一.class文档由两个不同的类加载器载入,则会有两份不同的Class实例。
package cc.openhome; import static java.lang.System.out; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; public class ClassLoaderDemo { public static void main(String[] args) { try { String path = args[0]; // 測試路徑 String clzName = args[1]; // 測試類別 Class clz1 = loadClassFrom(path, clzName); out.println(clz1); Class clz2 = loadClassFrom(path, clzName); out.println(clz2); out.printf("clz1 與 clz2 為%s實例", clz1 == clz2 ? "相同" : "不同"); } catch (ArrayIndexOutOfBoundsException e) { out.println("沒有指定類別載入路徑與名稱"); } catch (MalformedURLException e) { out.println("載入路徑錯誤"); } catch (ClassNotFoundException e) { out.println("找不到指定的類別"); } } private static Class loadClassFrom(String path, String clzName) throws ClassNotFoundException, MalformedURLException { ClassLoader loader = new URLClassLoader(new URL[] {new URL(path)}); return loader.loadClass(clzName); } }
第十八章 自定义泛型、枚举与注释
泛型也可以仅定义在方法上,可在方法返回类型前使用定义泛型,之后就可以使用T来定义返回类型、参数类型,或在方法内声明变量、转换类型等。
在定义泛型时,使用extends限制指定T实际类型时,必须是某类的子类。
定义
enum时有个特定值类本体语法,可用于操作接口或重新定义父类方法。
定义
enum时可以自行定义构造函数,条件是不得为公开构造函数,也不可以在构造函数中调用super()。
本周代码托管截图
其中一个的截图过程:其他(感悟、思考等,可选)
本周在学习了16-18章的基础上,还完成了实验四,了解了在安卓平台上应用java程序,虽然过程很艰辛,但是也让我学到了很多东西;使用git托管代码也不再成为障碍,感觉书上很多知识掌握的不够好,在之后做项目时希望可以多多练习。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/2 | 10/15 | |
第二周 | 100/200 | 2/4 | 15/30 | |
第三周 | 300/500 | 1/5 | 30/60 | |
第四周 | 300/800 | 1/6 | 30/90 | |
第五周 | 347/1147 | 1/7 | 30/120 | |
第六周 | 352/1499 | 2/9 | 30/150 | |
第七周 | 258/1757 | 2/11 | 30/180 | |
第八周 | 350/2107 | 2/13 | 30/210 | |
第九周 | 550/2657 | 2/15 | 30/240 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
...
相关文章推荐
- Json在java中的使用
- java排序之快排
- Java URL自定义私有网络协议
- struts2标签库详解
- spring对乱码的处理及其springmvc核心器注册
- 详解备忘录模式及其在Java设计模式编程中的实现
- Dubbo与Zookeeper SpringMVC整合和使用(负载均衡 容错)
- spring 解决多数据源问题,主要的继承类为AbstractRoutingDataSource
- 转:Eclipse常见问题,快捷键收集
- 在Java里处理文件的技巧
- [转]MyEclipse for Spring2014破解
- windows7环境下为eclipse安装CDT插件
- Eclipse安装Freemarker插件
- 升级Struts2版本到2.3.28.1,
- 在Java里处理文件的技巧
- 正则表达式知识详解之替换 (java版示例)
- RPC应用的java实现(转)
- 4.29 java
- Java模糊查询方法详解
- 图文详解Java环境变量配置方法