java复习

   重写(Override)和重载(Overload)

     重写:子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。

    重载:方法名必须相同。形式参数个数不同或者参数类型不同。

 

 构造器

    1、方法名和类名相同,且无返回值

    2、构造器能重载,不能重写。

  成员访问修饰符

    

多态

  BaseClass   b  =  new  SubClass();  //父类对象调用子类实例

  造成现象的原因:因为子类是一种特殊的父类,因此java允许把一个子类对象直接赋给一个父类引用变量。无须任何类型转换,或者被称为向上转型,向上转型由系统自动完成。

  if(b  instanceof  BaseClass ){ 

  ((SubClass) b).bark();  //向上转型后的对象只能访问子类继承父类的方法,非继承方法需要通过向下转型后才能访问。

  }

  多态:相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。

  

引用变量的强制类型转换

  • 基本类型之间的转换只能在数值类型之间进行,数值类型和布尔类型除外。
  • 引用类型之间的转换只能在具有继承关系的两个类型之间进行,如果两个没有任何继承关系的类型进行类型转换。则会引发ClassCastException异常。
    instanceof是Java的一个二元操作符(运算符),它的作用是判断其左边对象是否为其右边类的实例,返回的是boolean类型的数据。用它来判断某个对象是否是某个Class类的实例。
    用法:boolean result = object instanceof class ; // object是子类,class是父类。

    AA a = new BB() ;
    if (a instanceof  BB){ //判断前面的对象是否是后面的类的子类、实现类的实例。
    BB b = (AA)a ;  //将AA类强转为BB类
    }
    b.speak ;  //调用的是BB类中的方法

初始化代码块
  与构造器不同,初始化块是一段固定的代码,不能接受任何参数。基于这个原理,不难发现初始化块的用法,如果有一段初始化处理的代码对所有对象完全相同,且无须接受任何参数,就可以将这段代码提取到代码块中。

  初始化代码块总是在构造器执行之前执行。

  初始化块的修饰符只能是static

  与构造器类似,创建一个java对象时,不仅会执行该类的普通初始化块和构造器,而且系统会一直上溯到java.lang.Object类。先执行java.lang.Object类的初始化,开始执行java.lang.Object的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器,最后才执行该类的初始化块和构造器,返回该类的对象。

静态代码块

  如果定义初始化块时使用了static修饰符,则这个初始化块就变成了静态初始化块,也被称为类初始化块(普通初始化块负责对对象执行初始化,类初始化则负责对类进行初始化)。静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象是才执行,因此静态初始化块总是比普通初始化块先执行。
  与普通初始化块类似,系统在类初始化阶段执行静态初始化时,不仅会执行本类的静态初始化块,还会一直上溯到Object类,先执行Object类的静态初始化块,然后执行其父类的静态初始块,最后才执行该类的静态初始化块。
  JVM会在第一次使用某个类时,执行类初始化代码或者声明类成员变量时指定的初始化,它们的执行顺序与源代码中的排列顺序相同。

  总结:静态代码块和静态成员变量是JVM在类加载的时候就运行了,而初始化代码块是在对象实例化时运行,且在构造器前面运行。

  NullAccessStatic  nas  =  null;//
  nas.test(); //test()方法为类的静态方法。即使nas实例为null,也可以访问。

 

java四种整数数据类型的取值范围

  byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 

byte占一个字节空间,最高位是符号位,剩余7位能表示0-127,加上符号位的正负,就是-127至+127,但负0没必要,为充分利用,就用负零表示-128(即原码1000,0000)。(计算机转补码后存储)

  short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)

  int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)

  long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

单例(Singleton)类

  通过自定义控制,使类只产生一个对象。

       

 final修饰符

  final 修饰的实例变量,要么在定义该实例变量时指定初始化,要么在普通初始化块或者构造器中为该实例变量指定初始化。

   

 

  
  

  

  

 

  

posted on 2019-06-25 16:02  eggtomato  阅读(167)  评论(0编辑  收藏  举报

导航