zoukankan      html  css  js  c++  java
  • 笔记2

    02/13
    一.Java语言
    1、①特点
           跨平台、面向对象、安全性
        ②开发环境搭建
          a.开发工具
            eclipse、myeclipse
          b.JDKjava包、JRE运行时环境、JVM虚拟机
       ③Java文件
          *.java源文件
          *.class可执行文件/字节码文件
       ④新建Java类
          java都是以class的形式存在
           public class 类名{
               访问修饰符 数据类型 属性名;
                 ------
               访问修饰符 返回值类型 方法名(参数列表){
                    方法体
               return 和返回值类型相兼容的数据;
              }
          }
        ⑤变量
          a.变量必须要有明确的类型,java的数据类型有八种:
               char->
            byte->short->int->long->float->double
              boolean
          b.引用数据类型
             类、数组、接口
          c.成员变量和局部变量
        ⑥方法
          对象行为,方法中一般封装某一个特定的功能
          方法分为两类:
           a.没有返回值的方法,访问修饰符为void(不能省略),方法中方法体里面可以没有return
           b.有返回值的方法,要定义合适的返回值类型,方法体
              中需要有return返回相对应的值。
              形参和实参
       ⑦对象使用
          初始化对象:类名 对象名=new 类名();
          访问对象属性 对象名.属性名 可以赋值也可以获取属性值

          访问对象方法 对象名.方法名 可以调用对象的方法,如果
          方法有返回值,需要定义一个变量来接收
       ⑧String 字符串
          String是一个类,String的实例是对象,如:String name="jack";

    表:



    02/14

    软件出现的目的

    用计算机的语言描述现实世界

    发现类 发现类的属性及方法

    用计算机解决现实世界的问题
    描述
    面向对象的思想 → 面向对象的世界

    面向对象设计和开发程序的好处
    交流更加流畅
    提高设计和开发效率


    面向对象 02/15

    构造方法是用来描述对象创建的过程,构造方法在对象创建的过程中被调用

    构造方法:

    无返回值类型 与类名相同
    ↑ ↑
    访问修饰符 构造方法符(){
          //初始化代码 ↓
    } 可以指定参数

    如果类中没有写构造方法,系统会默认提供一个无参的构造方法,如果类中出现了构造
    方法,系统不会提供默认的无参构造方法。

    1.通过new关键字在内存中申请空间
    2.给dog对象的属性进行赋值
    3.调用dog对象的方法

    02/16
    方法重载(同类)
    1.方法名相同
    2.参数项不同
    3.与返回值、访问修饰符无关


    this的用法02/17

    this关键字的用法
    调用属性
    this.health=100;
    this.name="大黄";

    调用方法
    this.print();

    调用构造方法
    this(); →如果调用必须是构造方法中的第一条语句
    this("小黑",100,100,"黑");


    封装 02/20
    封装的概念:
    将类的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法
    来实现对隐藏信息的操作和访问

    封装的好处
    隐藏类的实现细节
    方便加入控制语句
    方便修改实现
    只能通过制定方法访问数据

    封装步骤
    修改属性的可见性 → 设为Private

    创建共有的getter/sether方法 → 用于属性的读写

    在getter/sether 方法中加入属性控制语句 → 对数学值得合法性进行判断

    02/21
    * 封装
    * 1.将属性私有化,访问修饰符设为private,属性只能在本类中使用
    * 2.在类中给属性提供相对的get/set的方法,给外部的程序访问属性
    * 3.在属性的相对应的方法中,提供业务逻辑的判断
    * 4.在封装的时候,如果属性设置业务逻辑的判断,在相对应的构造方
    * 法中需要调用相对应的set方法

    static关键字 02/22

    static的修饰的资源属于类级别的资源,静态的资源,对于类的所有实例
    对象共享资源。
    static关键字可以用来修饰属性、方法、代码块、内部类。
    static修饰的资源,在类加载期间执行。//类加载---加载文件时

    1.static修饰的属性
    static关键字修饰的属性,属于对类所有实例对象共享的变量。
    访问静态的属性:类名.属性名//类级别可以直接点访问

    2.static修饰的方法
    static关键字修饰的方法,属于静态方法,可以直接类名.方法名()进行调用,
    一般是吧静态方法作为工具方法。
    静方法中不能调用对象的资源(对象属性、对象方法)

    3.static修饰的代码块
    在类加载的时候执行,应为类只加载一次,所以static的代码块也只运行一次,
    一般是使用static代码块来加载一些静态的资源,比如说配置原件。

    static修饰符与非static修饰的区别

    static、非private修饰 非static、private修饰

    属性 类属性、类变量 实例属性、实例变量

    方法 类方法 实例方法

    类名.属性 对象.属性
    调用方式 类名.方法名 对象.方法()
    对象.属性
    对象.方法()

    归属 类 单个对象


    继承 02/23
    1.继承的前提条件
    子类和父类之间必须满足‘子类 is a 父类’的逻辑关系,才能有继承
    2.继承的优点
    a.提高了代码之间的重用性(继承后子类共用父类代码)
    b.提高了代码后期的可维护性(后期代码中需要添加或删除某些代码时只需要修改父
    类代码即可)
    3.继承步骤
    a.将多个类中的共有属性和方法提取出来,建立一个父类
    b.在子类后面使用extends关键字完成继承 子类 extends 父类
    c.在子类中可以调用父类的代码
    注:在java中属于单继承,在extends关键字后面只能有一个父类

    02/24

    子类访问父类成员 使用super关键字
    访问父类构造方法
    super();
    super(name,health,love); 在子类构造方法中调用切必须是第一句

    访问父类属性
    super(name);

    访问父类方法
    super.print();

    子类 不能被继承的 父类 资源

    private成员
    子类与父类不在同包,使用默认访问权限的成员
    构造方法

    访问修饰符protected
    可以修饰属性和方法
    本类、同包、子类可以访问

    访问修饰符调用范围
    private: 本类
    默认: 本类 同包
    pritected:本类 同包 子类
    public: 本类 同包 子类 其他

    02/27
    多重继承关系的初始化顺序

    父类属性→
                父类构造方法→
                                 子类属性→
                                            子类构造方法

    一、对象初始化过程:
    1.在创建类之前,检查类是否已加载(检查硬盘上的.class文件是否加载到内存中)
    如果没有加载就先加载父类的文件,在加载本类的文件。

    Java使用的加载的策略:懒惰式加载(按需加载),用到的时候加载,只加载一次

    2.分配对象的空间。递归分配所有父类和子类的属性空间。
    属性会自动初始化为‘0’值

    3.给属性赋值。

    4.调用父类的构造方法。(默认调用父类的无参构造方法)

    5.调用本类的构造方法。

    方法名重写的规则(子类)@Overide//检测是否为重写
    1.方法名相同
    2.参数列表相同
    3.返回值类型相同或者其子类;
    4.访问权限不能严于父类

    02/28
    Super关键字来访问父类的成员
    super只能出现在子类的方法和构造方法中
    super调用构造方法时,只能是第一句
    super不能访问父类的private成员

    一、abstract关键字
    abstract关键字表示的是抽象的意思,可以用来修饰类和方法。修饰类我们称之为
    抽象类,修饰方法我们称之为抽象方法

    1.abstract修饰类,抽象类
    public abstract class 类名{}
    抽象类用来表示一些抽象的概念。
    抽象类的特点:
    a.抽象类不能被实例化
    b.抽象类可以有属性、方法、构造方法,是用来给子类继承的
    c.抽象类中的方法不一定全部都是抽象方法。

    2.abstract修饰方法,抽象方法
    访问修饰符 abstract 返回值类型 方法名(参数列表);
    抽象方法不需要自己实现,由子类来实现
    抽象方法的特点:
    a.抽象方法没有方法体
    b.抽象方法必须出现在抽象类中
    c.一个类继承抽象类之后必须要实现里面的所有抽象方法//普通类中

    3.抽象类可以继承抽象类


    final 03/01
    一、final关键字;最终的
    1.final关键字可以用来修饰类、属性、方法
    2.final关键字修饰的类不能再被继承。如:String
    String类是final修饰的类,不能被继承。
    3.final关键字修饰的方法,不能再被子类重写。
    4.final关键字修饰的变量,初始化以后值不能再发生改变。
    在java中使用static和final关键字共同修饰的变量称之为常量,常量名全大写
    如:public static final int AGE=20;
    final修饰引用类型的变量,引用地址不能发生改变,但是只限定的是第一层,
    引用类型的属性值是可以发生改变的。

    多态 03/02
    生活中的多态
    不同类型的打印机打印效果不同
    同一种事物,由于条件不同,产生的结果也不同

    程序中的多态
    同一个引用类型,是用不同实例执行不同操作//父类引用,子类对象

    使用多态实现思路
    编写父类
    编写子类,子类重写父类方法→实现多态的两个要素
         运行时,使用父类的类型 ↗ ,子类的对象
    向上转型
    Pet pet=new Dog(); →自动类型转换

    实现多态的两种形式
    使用父类作为方法形象实现多态
    使用父类作为方法返回值实现多态

    03/06
    父类到子类的转换
    向下转换(强制类型转换)
    Pet pet=new Dog("名字","种类");
    Dog dog=(Dog)pet;
    Penguin png=(Penguin)pet;→报错,必须转换为父类指向的真实子类类型

    instanceof运算符
    语法:对象 instanceof 类或接口
    instanceof通常和强制类型转换结合使用


    小结 03/07
    Java面向对象编程思想
    面向对象三个特征:封装、继承、多态
    封装:
    语法:属性私有化(private)、提供相对饮的get/set的方法镜像访问(public)
    、在set/get的方法中对属性的数据做相对应的业务多级的判断
    思想:封装外面的程序不能直接访问本类的属性,需要通本类提供的方法简介访问
    本类的属性,从而提高代码的安全性。

    涉及到的其他的知识点:
    构造方法:用来描述对象创建过程,可以通过构造方法快速创建对象。
    this关键字:代表本类对象,调用本类的属性方法、构造方法。
    方法重载:方法名相同,参数列表不相同
    --------------------------------------------------------------------------
    继承:
    语法:子类 extends 父类
    思想:多个类所描述的有共同的特征或行为,就可以将这些类中共同的部分抽取出
    来建立他们的父类。
    继承的好处子类共用父类的代码,提高了代码的重用性;代码后期扩展和维护,只
    需要添加对应的子类即可。

    涉及到的其他的知识点:
    super关键字:代表父类的对象,调用父类的属性、方法、构造方法
    abstract关键字:抽象,修饰类、修饰方法。
    static关键字:静态,修饰属性、方法、代码块、内部类
    final关键字:最终,修饰属性、方法、类
    方法重写:方法名相同,参数列表相同,返回值类型相同修饰符大于或等于父类的
    访问修饰符。
    --------------------------------------------------------------------------
    多态:
    语法:父类 对象名=new 子类();
    思想:父类型的引用可指向内存中的子类对象的内存空间,就可以方便设计方法
    的参数和返回值类型的时候可以设计成父类对象,这样的方法在实现时比较简洁
    ,在后期进行扩展时,方法比较容易。
    在代码中,多态的使用更多的是父类引用指向子类对象,会自动类型转换(向上转
    型),有时候也需要调用子类中自己的东西,这时候就需要还原子类,强制类型转
    换(向下转型),向下转换的时候先使用instanceof运算符做类型的判断。

    interface 接口
    接口的特性
    接口不可以被实例化 常作为类型使用
    实现类必须实现接口的所有方法
    实现类可以实现多个接口 Java中的多继承
    接口中的变量都是静态常量

    03/08
    接口是一种能力
    体现在接口的方法上

    面向接口编程

    程序 丨关心实现类有和能力,而不关心实现细节
    设计时 丨面向接口的约定而不考虑接口的具体实现

    如何理解接口是一种能力
    接口有比抽象类更好的特性:
    1.可以被多继承
    2.设计和实现完全分离
    3.更自然的使用多态
    4.更容易搭建程序框架
    5.更容易更换实现
    ....

    接口是一种约定
    有些接口只有名称
    体现在接口名称和注释上
    方法的实现方式要通过注释来约定


    面向接口编程
    陈谷设计时面向接口的约定而不考虑具体实现

    内部类 03/09
    根据位置的不同,Java中的内部类分为四种:
    静态内部类 、成员内部类、局部内部类、匿名内部类

    任何内部类都变异成独立的class文件
    最大的作用:封装
    匿名类可以封装内部概念


    静态内部类:
    使用static修饰,声明在类体中
    静态内部类中可以访问外部类的静态成员

    成员内部类:
    声明在类体中,不使用static,具有类的成员特征,也就是必须有类的实例才能创建
    内部实例
    内部类实例可以访问共享外部类的成员变量

    局部内部类:

    把类声明在方法中,就是局部内部类,作用域类似于局部变量

    匿名内部类:
    匿名类可以卸载任何地方,就像一般语句一样
    语法更像是创建对象:
    Too t=new Too(){
    };
    匿名类是对原类的一个集成,同事创建了实例,{}就是集成以后的类体
    类体中可使用所有类的语法
    匿名类不能写构造器
    匿名类可以从抽象类或者接口继承,必须提供抽象方法的实现


    异常 03/21
    知识点
    1、Java异常机制
    a.当代码运行到可能出现异常的代码是,有程序员或jvm抛出异常对象,异常对象会记
    录的相关信息
    b.异常对象抛出后,就会去寻找异常处理的相关的代码(catch),如果找到了,异常到
    此结束
    c.如果未找到,异常对象会继续上抛,寻找异常处理的代码
    d.如果到main还未找到异常处理的代码,就会由main将异常抛给虚拟机
    e.异常抛出的每一层代码都会被中断

    System.exit(1); //中断程序,退出Java虚拟机

    try ①↘发生异常
    产生异常对象

    chatch ②←进入catch块 异常类型匹配
    return
    ↓ ③执行finally块
    ④执行return 退出方法↑finally


    2、try,catch,finally使用规则
    try{//必须出现,且只能出现一次

    }catch(Exception e){//可以出现0-N次,如果没有catch,就必须有finally

    }finally{//可以出现0-1次

    }


    多重catch块
    引发多种类型的异常
    排列catch语句的顺序:先子类后父类
    发生异常时按顺序逐个匹配
    执行第一个与异常类型匹配的catch语句


    声明异常 03/22
    throws声明某个方法可能抛出的各种异常

    知识点
    1、Java中的异常分为两类
    运行时异常:在代码编译的时候不会进行检测,在代码运行的过程中产生异常。RuntimeException及其子类都属于运行时异常。
    检查异常/检测异常:在代码编译的时候必须显示处理,才能通过编译器的编译。
    如:SQLException、ClassNotFoundException
    throws可以让检查异常通过编译器的编译,但是没有真正解决异常。
    throw手动抛出异常,并可以定义异常的信息。 throws可以声明多个异常,多个异常之间用逗号隔开。

    2、自定义异常
    ①写一个异常类继承exception
    ②手动实现exception的所有构造方法


    日志 02/23
    日志(log)
    主要用来记录系统运行中一些重要操作信息
    便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因

    日志分类
    SQL日志、异常日志、业务日志

    log4j是一个非常优秀的开源日志记录工具
    控制日志的输出级别
    控制日志信息输送的目的地是控制台、文件等
    控制每一条日志的输出格式

    使用log4j记录日志步骤
    在项目中加入log4j的JAR文件
    创建log4j.properties文件
    配置日志信息
    使用log4j记录日志信息

    03/24
    Object
    在Java类继承结构中java.lang.Object类位于顶端
    如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为
    java.lang.Object
    Object定义了“对象”的基本行为,被子类默认继承

    toString方法
    Object类中定义有toString方法,用于返回对象的字符表示(一个可以表示该对象属性内容的字符串)。
    所有的Java类都继承了toString方法,Object类toString方法返回的字符串形式为:“类名@hashCode值”
    Java类可以根据需要重写toString方法以返回更有意义的信息。

    equals方法
    Object的equals方法用于对象的“相等”逻辑。
    equals方法的定义如下:
    public boolean equals(Object obj)
    equals方法的逻辑为:如果认为调用该方法的对象(this)与参数对象相等返回true,否者返回false

    Object的equals方法的定义如下:
    public boolean equals(Object obj){
    return(this==obj)
    }
    按照Object类equals方法的逻辑,只有在this和obj是同一个对象是才返回true;Java类可以根据需要重写继承自Object的equals方法


    hashCode方法
    默认的hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址!
    一般使用对象的OID值作为hashCode的值
    OID是对象的唯一编号,在项目中一般采用数据库生成OID,也就是数据库中的“主键”

    包装类 03/27
    包装类 对应基本数据类型
    java.lang.Integer int
    java.lang.Character char
    java.lang. .... .....


    JDK5增加了自动'拆箱'和'装箱'的功能。
    integer i=100;

    03/28
    无参的构造方法,构造的Date对象封装当前的日期及时间
    Date date=new Date();

    Date类重写了toString方法,输出的字符串形如:
    Tue Mar 28 14:39:11 CST 2017

    gettime方法用于获取对应的毫秒数,即1970年1月1日距现在时间的毫秒差

    setTime方法用于通过毫秒数设置时间。

    java.text.SimpleDateFormat类用于实现Date对象和字符串表示的日期信息间的转换。

    add方法可以对秒一个日期(时间)分量增加/减少数值
    getActualMaximun可以返回某个时间分量最大值。


    集合框架 03/29
    Collection接口存储一组不唯一、无序的对象
    List接口存储一组不唯一、有序(插入顺序)的对象
    set接口存储一组唯一、无序的对象
    Map接口存储一组键值对象,提供Key到value的映射

    list接口的实现类
    ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
    LinkedList采用链表存储方式,插入、删除元素时效率比较高

    Map接口 03/30
    Map接口专门处理键值映射数据存储,可以根据键实现对值得操作
    常用的实现类是HashMap

    泛型集合 03/31
    JDK5.0使用泛型改写了集合框架中的所有接口和类

    迭代器
    通过迭代器iterator实现遍历
    获取iterator:collection接口的iterate()方法
    iterator的方法
    boolean hasNext();判断是否存在另一个可访问的元素
    Object next();返回要访问的下一个元素

    增加for型循环
    for(元素类型t 元素变量x:数组或集合对象){
    引用了x的java语句
    }


    Comparable 接口04/01
    针对对象数组或者集合中的元素进行排序时,首先需要确认对象元素的比较逻辑
    JDK中定义了comparable接口,用于表示对象间的大小关系,Java类可以通过实现comparable接口编写对象的大小逻辑

    public interafce comparable<T>{
    public int compare To (T o);
    }
    comparable接口重定义有compareTo方法,其逻辑是:
    返回正数表示this大于参数对象
    负数表示this小于参数对象
    0this等于参数对象

    JDBC 04/05
    JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力

    JDBC API
    提供者:sun公司
    内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
    drivermanager类
    connection接口
    statement接口
    resultset接口
    DriverManager
    提供者:sun公司
    作用:管理各种不同的JDBC驱动

    JDBC 驱动
    提供者:数据库厂商
    作用:负责连接各种不同的数据库


    JDBC API 主要功能:与数据库建立连接,执行SQL语句、处理结果
    ①DriverManager:依数据库的不同,管理JDBC驱动
    ②Connection:扶着连接数据库并担任传送数据的任务
    ③Stantement:由Connection产生、负责执行SQL语句
    ④ResultSet:负责保持Statement执行后所有产生的查询结果

    04/10

    使用preparedstatement接口(预编译的SQL语句)
    继承自statement接口
    比statement对象使用起来更加灵活,更有效率

    提高了代码的可读性和可维护性
    提高了安全性
    提高了sal语句执行的性能

    04/11
    持久化:是将程序中的数据在瞬时状态和持久状态间转换的机制
    持久化的实现方式:
    数据库
    普通文件
    XML文件

    什么是DAO
    Data Access Object(数据存取对象)
    位于业务逻辑和持久化数据之间
    实现对持久化数据的访问

    DAO模式的组成
    DAO模式的组成部分
    DAO接口
    DAO实现类
    实体类
    数据库连接和关闭工具类
    Dao模式理解
    起到转换器的作用,把实体类转换为数据库中的记录

    分层 04/12
    分层的特点
    每一层都有自己的职责
    上一层不用关心下一次的实现细节,上一层通过下一层提供的对外接口来使用其功能
    上一层调用下一层的功能,下一层不能调用上一层功能

    分层开发的好处
    各层专注于自己功能的实现,便于调高质量
    便于分工协作,提高开发效率
    便于代码复用
    便于程序扩展


    I/O 04/18
    JAVA API:java.io.File类

    File类
    创建文件对象
    物理文件或目录
    操作文件或目录的属性

    04/21

    1.常见的编码
    GBK、GB2312、UTF-8

    04/25
    DatalinputStream类
    FileInputStream的子类
    与FileInputStream类结合使用读取二进制文件
    DateOutoutStream类
    FileOutputStream类
    FileOutputStream的子类
    与FileOutputStream类结合使用写二进制文件

  • 相关阅读:
    Android sdk + PhoneGap 配置
    一个解析url参数方法
    开始写笔记了~~
    Codevs 3305 水果姐逛水果街Ⅱ 倍增LCA
    Codevs 3304 水果姐逛水果街Ⅰ 线段树
    Cogs 1070. [焦作一中2012] 玻璃球游戏 带权并查集,逆序处理
    Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
    Bzoj 2453: 维护队列 && Bzoj 2120: 数颜色 分块,bitset
    Uoj #131. 【NOI2015】品酒大会 后缀数组,并查集
    Tyvj P1463 智商问题 分块
  • 原文地址:https://www.cnblogs.com/PBT95/p/6852829.html
Copyright © 2011-2022 走看看