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

参考资料

20145206《Java程序设计》第9周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. HDNOIP普及+提高整合

    好久没有更新博客了...这几天一直在切 HDNOIP... 正式时跪惨了...所以考完后回来奋力切出了所有题. [COJ3351]HDNOIP201601回文质数 试题描述 回文数是具有对称性的自然数 ...

  2. Linux系统运行级别

  3. git 教程(9)-远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  4. union联合体

    今天笔试的一道题,好久没用union了,竟然忘光光了. 关于其大小的计算,分两步:先算对齐大小(成员中字节最大的那个),再算分配空间: 不仅是对齐大小的整数倍,还要满足实际大小不能小于最大成员大小. ...

  5. spring 部分配置内容备忘

    1.spring定时器简单配置: <bean name="taskJob" class="com.netcloud.mail.util.TaskJob"& ...

  6. [转]Aptana Studio 3配置Python开发环境图文教程

    转载URL:http://www.cr173.com/html/49260_1.html 一.安装Aptana Studio 3 安装完运行时建议将相关默认工作目录设定在英文的某个目录下.避免可能出现 ...

  7. 22行Python代码实现 单词纠错

    http://norvig.com/spell-correct.html 基本原理就是概率统计,亮点是Python的各种特性作者用得出神入化,尤其是获取与word相距编辑距离为2的所有单词,先找出与w ...

  8. JavaScript——Window对象

    1.serTimeout()和setinterval()可用于注册在指定的时间之后单词或者重复调用的函数. 2.window对象的location属性引用的是Location对象,表示该窗口当前显示的 ...

  9. POJ 1062 ( dijkstra )

    http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚 ...

  10. 【转】ArrayList其实就那么一回事儿之源码浅析

    转自:http://www.cnblogs.com/dongying/p/4013271.html?utm_source=tuicool&utm_medium=referral ArrayLi ...