20145118《Java程序设计》 第9周学习总结
20145118 《Java程序设计》第9周学习总结
教材学习内容总结
1.SUN公司定义了一套Java操作数据库的规范(接口)来简化数据库操作,称之为JDBC。开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库。
2.JDBC API
- 服务接口(Service Interface): Connection
- 提供者注册API(Provider Registration API):Dri
- verManager.registerDriver
- 服务访问API(Service Access API):DriverManager.getConnection
- 服务提供者接口:Driver
3.连接数据库
注册Driver: DriverManager.registerDriver()
获取Connection: Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
关闭Connection:
4.DriverManager类用于加载驱动并创建与数据库的链接.调用方法为DriverManager.registerDriver(new Driver()) DriverManager.getConnection(url, user, password).
5.Connection类是数据库使用中最重要的对象,代表数据库的链接,客户端和数据库的所有交互都是通过connection类来完成的.
6.ResultSet类代表了Sql语句的执行结果,ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。类似于堆栈时指针的使用方法.
另外,该类还提供了一个方便的方法,可以对结果集进行滚动,
- next():移动到下一行
- Previous():移动到前一行
- absolute(int row):移动到指定行
- beforeFirst():移动resultSet的最前面。
- afterLast() :移动到resultSet的最后面。
7.类加载是将类的class文件读入JVM,并根据它创建一个class对象。类连接是把类的二进制数据合并到JRE中.其中分为校验、准备、解析三个阶段。初始化是对类的静态变量、静态初始化块进行初始化。
- 综上,当我们使用一个类时,如果该类还没有加载到内存中,系统会通过加载-连接-初始化三个阶段对类进行初始化.
8.类加载器(ClassLoader)负责将.class文件加载到内存中,并根据它生成对应的java.lang.Class对象,它负责加载所有的类,而一旦一个类被加载入JVM中,就不会被再次载入了!
JVM运行时会产生3个ClassLoader:
- BootstrapClassLoader(根类加载器)
- ExtClassLoader(扩展类加载器)
- AppClassLoader(系统类加载器)。
9.BootstrapClassLoader负责加载JRE的核心类库,它不是ClassLoader的子类!它使用C++编写,因此我们在Java中看不到,通过其子类的getParent()方法获取时,将返回null。BootstrapClassLoader负责装载JRE目标下的rt.jar、charsets.jar等Java核心类库。
10.全限定类名即指包名+类名;在Java中,类名用全限定类名来定义,而在JVM中,类用其全限定类名和其类加载器来定义.
11.泛型使得编译器能够在编译期间对集合中加入的对象进行检查,如果加入了不同类型的对象,就会报错,而不必等到运行期间再进行相关的类型转换,使得程序的安全性也大大提高,泛型一般用于集合类中。例如对于一个ArrayList列表来说,如果只想在列表中放入String类型元素,可以用如下方法:
ArrayList<String> list=new ArrayList<String>();
12.枚举的本质是一个类,可以使用enum关键字来声明一个枚举类型:
[访问控制符] enum 枚举类型名{value1,value2,......}
13.使用枚举类型时,可以定义在类的内部也可以定义在类的外部(参考函数在C语言中的定义思想),如果定义在内部,访问控制符可以是public,protected,private或者默认的控制符.如果定义在类的外部,访问控制符只能是public和默认控制符;
14.一般使用枚举来表示一组常量数据,但也可以用来声明方法,但方法要放在常量之后,并用分号区分.
15.枚举类型不能是abstract或者final类型!!
16.注释有常用标准类型和自定义注释类型之分.注释格式有
-单行(single-line)注释:“//……”
-块(block)注释:“/*……*/”
-文档注释:“/**……*/”
-javadoc 注释标签语法:如@exception 对方法的说明 对方法可能抛出的异常进行说明
之前我们在测试用例时还经常碰到@Test,是对测试代码进行说明.
@Override,就是标准注释,被注释的方法必须是父类或接口中已定义的方法,请编译程
序协助是否真的为重新定义方法。
17.使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。
定义注释格式为
public @interface 注解名 {定义体}
注解参数的可支持数据类型:
1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
2.String类型
3.Class类型
4.enum类型
5.Annotation类型
6.以上所有类型的数组
教材学习中的问题和解决过程
自己写了一个简单的自定义注释和使用注释的例子:
package cy;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 水果名称注解
* @author cy
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitName {
String value() default "";
}
package cy;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 水果颜色注解
* @author cy
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitColor {
/**
* 颜色枚举
* @author cy
*
*/
public enum Color{ BULE,RED,GREEN};
/**
* 颜色属性
* @return
*/
Color fruitColor() default Color.GREEN;
}
package cy;
import annotation.FruitColor.Color;
public class Apple {
@FruitName("Apple")
private String appleName;
@FruitColor(fruitColor=Color.RED)
private String appleColor;
public void setAppleColor(String appleColor) {
this.appleColor = appleColor;
}
public String getAppleColor() {
return appleColor;
}
public void setAppleName(String appleName) {
this.appleName = appleName;
}
public String getAppleName() {
return appleName;
}
public void displayName(){
System.out.println("水果的名字是:苹果");
}
}
代码调试中的问题和解决过程
根据书上格式自己编写的上述注释代码,但因为不熟练,一开始编写完成后虽然可以运行,可总有种拼凑的感觉,很乱很不好看,后来通过自己上网查资料,借鉴了大神编写代码的格式,就让程序看起来好看多了.
本周代码托管截图
其他(感悟、思考等,可选)
总觉得自己目前的水平还只停留在抄代码的阶段,如果要自己写,还是会出现很多问题,也要有个模版才敢下手,希望自己能逐渐走出这个瓶颈.
学习进度条
代码行数(新增/累积) | 博客量(新增/累积 | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 20篇 | 200小时 | |
第一周 | 100/100 | 1/1 | 7/7 | |
第二周 | 200/300 | 1/2 | 7/14 | |
第三周 | 400/700 | 1/3 | 9/23 | |
第四周 | 400/1100 | 1/4 | 7/30 | |
第五周 | 500/1600 | 1/5 | 9/39 | |
第六周 | 400/2000 | 2/7 | 15/54 | |
第七周 | 700/2700 | 2/9 | 17/71 | |
第八周 | 500/3200 | 2/11 | 12/83 | |
第九周 | 350/3550 | 2/13 | 10/93 |
参考资料
- Java学习笔记(第8版)
- 《Java学习笔记(第8版)》学习指导
- ...
- ...
20145118《Java程序设计》 第9周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 如何写好PPT
怎样写好ppt? 阿里巴巴矢量图标库 优品PPT SmartArt PPT美化大师
- SQL Fundamentals: 数据更新及事务处理(INSERT INTO,UPDATE,DELETE,事务,锁)
SQL Fundamentals || Oracle SQL语言 在SQL语句中,数据操作语言DML由两部分组成,查询(DQL).更新操作(增加,修改,删除). 增加数据(INSERT INTO) 数 ...
- 七种RAID技术
想把好多硬盘组在一起使用的基本方式为:连接所有硬盘,先向第一个硬盘中写数据,满了之后,再向第二个硬盘上写数据,如此只是简单的连通了多个硬盘. 再此基础上发展了RAID技术:由独立磁盘组成的具有冗余特性 ...
- 【make install】自定义安装目录,添加动态链接库 【--prefix】 【ldconfig】 【LD_LIBRARY_PATH】
怎么卸载make install安装的软件? https://www.zhihu.com/question/20092756 怎么指定安装目录以及对应的添加动态库的方法 linux库在不指定安装路径时 ...
- Making the Grade---poj3666(dp)
题目链接:http://poj.org/problem?id=3666 题意:有一个n个数的序列a,现在要把这些序列变成单调增的或者单调减的序列 b , 其价值为|A1 - B1| + |A2 - B ...
- qt——QT中QWidget、QDialog及QMainWindow的区别
QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...
- 获取图片的大小(宽高):BytesIO
获取图片的大小(宽高) from io import BytesIO,StringIO import requests from PIL import Image img_url = "ht ...
- 【剑指offer】用两个栈实现队列
一.题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 二.思路: 两个栈A,B,A负责进栈,B负责出栈,进栈很容易,A中添加即可,出栈需要从B里出,所以要先 ...
- shell date 获取昨天日期
使用date -d 选项: date +"%Y%m%d" -d "+n days" 今天的后n天日期 date +" ...
- Hadoop 之日志管理—应用在 YARN 中运行时的日志
背景: 在写这篇博文前,自己一直没有弄明白一个问题,“在 Map 函数和 Reduce 函数中使用 System.out.print 打印日志时,输出内容在哪里显示?”.试了好多回,在 log/* 目 ...