• 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 修饰的实例变量,要么在定义该实例变量时指定初始化,要么在普通初始化块或者构造器中为该实例变量指定初始化。

       

      
      

      

      

      

  • 相关阅读:
    线性表
    数据结构绪论
    warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
    struct和typedef struct在c++中的用法
    struct和typedef struct在c语言中的用法
    GCC命令
    python list排序的两种方法及实例讲解
    Python随机数与随机字符串详解
    python处理Excel
    python3使用PyMysql连接mysql数据库
  • 原文地址:https://www.cnblogs.com/eggtomcato/p/11083363.html
Copyright © 2020-2023  润新知