标签:jdk 逗号 chat 分享 自动 抽象方法 多级 character 运行
 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类结合使用写二进制文件
标签:jdk 逗号 chat 分享 自动 抽象方法 多级 character 运行
原文地址:http://www.cnblogs.com/PBT95/p/6852829.html