Java简要复习

  1. 面向对象
  • 封装:

    (1)类:对一类事物抽象所得到的一个概念

    (2)对象:一个具体的事物

    (3)构造函数:不能有返回;值方法名与类名相同;可以有多个;默认生成无参无方法体无返回值的构造函数,自己一旦定义,编译器将不再生成默认的构造函数;生成一个类对象是能且只能调用其中的一个构造函数;

    (4)static:凡是static修饰的成员都是静态成员;静态成员都是属于类的;非静态的可以访问静态的;静态的不可以访问非静态的;通过类名只能访问一个类中的非私有静态成员;私有静态成员也不可以通过对象名访问;
    (5)this:非静态方法默认都含有一个this指针;this代表正在调用本方法的对象

    class A
    {
    //每一个对象都有自己的j
         private static int i;
         int j;
    
         public static void g()
         {
    
         }
     //所有对象共用f(),用this来找到正在调用本方法的对象    
         public void f()
         {
    
         }
    }
    

    (6)final:
    修饰类:代表该类不能被继承
    修饰方法:代表该方法可以被继承但不能被重写
    修饰属性:表示该属性能且只能被赋一次值,赋值方式有两种,赋值时只能选择一种:1.定义的同时显示的初始化;2.构造函数中初始化

    class A{
       //private final int i=10;或者下面那种初始化
       public A(int j){
          i=j;
       }
    }
    

    (7)函数重载:同名不同参;返回值不能作为是否构成函数重载的依据

  • 继承:
    (1)定义:子类继承了父类的成员
    (2)注意的问题:非私有成员才可以被子类继承;
    (3)重写:
    重写方法必须和被重写方法具有相同的方法名称、参数列表、返回值类型;重写方法的访问权限要大于等于被重写方法

  • 多态:
    (1)定义:同一代码可以随上下文的不同而执行不同的操作,俗称多态,即一个父类的引用它既可以指向父类对象也可以指向子类对象,它可以根据当前时刻指向的不同,自动调用不同对象的方法

     class A{
        public void f(){
    
        } 
     }
     class B{
        public void f(A aa){
            aa.f();
        }
     }
     ```
    

(2)注意:通过父类的引用只能访问子类从父类继承过来的成员;只有在父类的引用本身指向的就是一个子类对象时,我们才可以把父类的引用强制转化为子类的引用

      class A{
         public void f(){

         } 
      }
      class B extends A{
         public void f(A aa){
           
         }

         public void g(A aa){
           
         }
      }
      A aa=new B();
      B bb=new B();
      aa.f();
      aa.g();//报错,通过父类的引用只能访问子类从父类那里继承过来的方法,
      //不能访问子类所特有的
      aa=bb;
      bb=(B)aa;//父类强转子类

(3)相关知识:

  • 抽象类:一个抽象类通常都含有抽象方法;只重写了抽象类部分抽象方法的类也必须要被标记为abstract不可以定义抽象类对象,但是抽象类可以实现多态
  • 接口:接口中的方法都是public abstract;不可以定义接口对象,但接口却可以实现多态;重写接口方法时public不能省;
    举例:
    线程的创建
    事件的处理
    容器的组织方式
    serializable接口(空接口,代表这个对象可以被序列化)
  1. 异常:运行时的错误
    (1)分类:
  • 无法处理的错误;
  • 可以处理的异常:分为必须处理的异常(是Exception子类但不是RuntimeException的子类)和可处理可不处理的异常(是RuntimeException的子类)

(2)注意:

  • finally{…}一定会执行,顺序不可颠倒,先捕获子类异常,再捕获父类异常,重写方法抛出异常的范围不能大于被重写方法抛出异常的范围,假设f方法抛出了A异常,则f方法有两种方式处理A异常:
    1)throws A
    2)try{…}catch() {…}
  1. 线程:
  • 定义:一个程序运行时的不同执行路径
  • 创建线程的方式:
    1)继承Thread类
    2)实现Runnable接口
  • 线程的同步
    1)多个线程操作同一资源,并且要求这些操作中的若干个操作不能被中断,这时就需要考虑线程同步的问题;
    2)线程同步是通过synchronized来实现
    3)synchronized可以修饰两种:
    代码块;
    方法(默认锁定的是this);
    4)示例:买票
  • 线程的通信
    1)有时多个线程只有彼此相互协作才可以完成某个功能,这是就需要线程的通信
    2)实现方式:wait 和 notify()/notifyAll()
    3)示例:生产和消费
  1. 内部类:
  • 一个类内部定义的类叫内部类,内部类的方法可以访向外部类的所有成员,外部类的方法不可以直接访问内部类的任何成员;
  • 一定要明白产生内部类的原因:如果一个类A要使用B类的所有成员,并且A类不需要被除B以外的其他类访问,则我们可以把A定义成B的内部类;
  • 因此几乎不存在直接生成内部类对象的问题,因此几乎不存在外部类需要访问内部类成员的问题
  1. 匿名类:匿名类是内部类的一种极端表现形式,匿名类可以访问外部类的所有成员和包裹本匿名类方法中的的final类型的局部变量

  2. IO流

  • 定义:如果一个类是用来完成程序和设备之间的数据传输,则这个类有一个特殊的称谓叫流
  • 流和类的关系流一定是类,但类不一定是流
  • 分类: 输入流 输出流
    字节流 字符流
    原始流 包裹流
  • 常用流介绍
    1)四大基本抽象流
    InputStream OutputStream
    Reader Writer
    2)字节流和字符流的区别:字节流可以处理所有格式的文件,字符流只能处理文本格式的文件
    3)文件流
    FileInputStream File0utputStream
    FileWriter FileReader
    4)缓冲流
    BufferedInputStream BufferedOutputStream
    BufferedReader BufferedWriter
    缓冲流可以提高数据传输的速度
    5)转化流
    OutputStreamWriter InputStreamReader
    例:如何将键盘上的字符组成字符中字节赋给String对象;编程实现把用户从键盘输入的字符保存到一个String对象中
    6)数据流
    DataInputStream Data0utputStream
    数据流可以把基本类型数据的二进制直接读入或写出;
    例:编程实现将long类型数据写入byte数组然后再从byte数组中把该数据读出
    7)Print流
    PrintStream PrintWriter
    Print流可以把基本类型数据格式化后的字符串输出
    8)0bject流
    ObjectOutputStream ObjectInputStream
    0bject流可以把一个对象直接写入或读出
  1. 容器
  • 定义:如果一个类是专门用来存放其他类对象的,则这个类有另外一个特殊的名称叫做容器
  • 容器和类的关系:容器一定是类,但类不一定是容器
  • Collection 接口
    1)Set 接口:无序,不允许重复 实现类:TreeSet HashSet
    2)List 接口:有序,允许重复 实现类:ArrayList LinkedList
  • Map 接口
    1)定义:既保存数据本身,也保存数据的主键的一种接口
    2)实现类:HashMap TreeMap
  • hashCode()和equals()方法:详见API
  • Collections类
    该类提供了对Collection接口实现类的排序,倒置、查找等功能
  • Comparable接口
    通过该接口的方法可以制订出对象之间比较的标准;凡是需要进行对象的比较排序的场合均可以考虑实现该接口
  • Iterator接口
    利用该接口提供的方法我们可以遍历所有容器中的元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值