• 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

    参考资料

  • 相关阅读:
    夜神 虚拟机调试 HBuilder 移动端应用
    maven filter 文件分环境打包部署小问题
    fatal: remote error: CAPTCHA required
    程序员今年是这样计划的
    线程池shutdown与shutdownnow 小例子
    JAVA知识点脉络记忆-刻意练习
    日志
    (职员)2015-12-02 星期三 日志
    (职员)2015-12-04 星期五 周志
    (职员)2015-12-04 星期五 日志
  • 原文地址:https://www.cnblogs.com/cy1123/p/5451523.html
Copyright © 2020-2023  润新知