美文网首页
JAVA面试知识点小结

JAVA面试知识点小结

作者: 丶失落叶 | 来源:发表于2019-09-30 19:34 被阅读0次

    1.重写  重载

        重载 :表示在一个类中可以有多个方法名相同的方法,这些方法的参数列表不同(参数个数或者参数类型不同)

                    重载必须有不同的参数列表,可以有不同的返回值类型,可以有不同的修饰符,可以抛出不同的异常

                    重载体现的是一个类中的多态性  在编译是起作用  静态多态性

        重写 : 重写的前提是得有继承关系,表示子类中某个方法名和返回值类型同父类完全相同。

                    参数列表与返回值类型必须与被重写的方法完全相同

                    重写中子类的访问修饰权限不能小于父类,重写方法一定不能抛出新的异常或者更为广泛的异常

                    重写体现的是子类和父类的之间的多态,在运行中起作用

    重写是子类重写父类的方法,重写的方法名和返回值类型必须相同,而类的构造必须同类名相同,所以构造方法是不能重写的。 重载是发生在同一个类中,所以构造方法是可以重载的。

    2.finally和final的区别

    1)简单区别

          final 是用以声明属性,方法,类,被final修饰的属性不可变,方法不可重写,类不可以继承

          finally是异常处理结构体中的关键字,异常中表示总是执行不能单独使用,用来释放资源。

          finalize是Object类中的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他        资源回收,例如关闭文件等。

    2)详细区别

          final用在四个地方:定义变量 ( 静态 非静态 )、定义方法的参数、  定义方法 、 定义类

          对于一个final变量,如果是基本数据类型变量,其数值在初始化之后就不可以改变了,如果是引用型数据类          型的变量,在对其初始化之后便不能在指向另一个对象。简单来说,就是被final修饰的变量的引用不可变,          引用指向的对象是可变的。

    3.static

        1)static表示静态。被static修饰的变量属于类变量可以通过类名.变量直接使用。被static所修饰的方法属于类方法,可以通过类名.方法名直接引用。

        2)被static 修饰的变量,方法统一属于类的静态资源,是类实例之间共享的。一处变,处处变。

        3)jdk把不同的类资源进行了分类放置,而不是放在了一个类中;这样做的好处:

                a.不同的有不同的静态资源,这样可以静态资源分类 ,比如把数学相关的静态资源放在java.lang.Math中                    等,这样就很清晰;

                b.避免重名,

                c.避免静态资源类无限膨胀

        4)静态资源可以引用静态资源;非静态资源可以引用静态资源;静态资源不可以引用非静态资源。

              解释:静态资源属于类,但是是独立于类存在。从jvm的类加载机制来看,静态资源是类初始化时候加载                的,而非静态支援是类new的时候才加载出来的。类的初始化要早于new,所以对静态资源来说,它是跟              着类 一起加载的这时候非静态资源还没有new出来,所以不知道有什么非静态资源;而非静态资源是是                new了 之后才产生的,所以有什么静态资源都知道。

        5)静态块:静态块里的代码只执行一次,并且只是在初始化类的时候进行执行。

                        a.静态资源的加载是严格按照静态资源的定义顺序来加载的

                        b.静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。

                        c.静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。

    4.如何自定义一个异常

        1)原因:区分异常

        2)格式: class  名字  extends Exception{ 

                            空参构造;

                            有参构造

                        }

    5.接口和抽象类的区别

    1)接口可以多继承,抽象类不可以多继承;一个类可以实现多个接口,但是一个类只能继承一个抽象类

    2)抽象类中可以有普通成员变量,接口中不能有普通成员变量,只能有常量;

    3)抽象类中可以有非抽象方法,接口中所有的方法都必须是抽象的;

    4)抽象类和接口都不可以实例化,抽象类可以通过子类间接实现实例化;

    5)抽象类中的成员可以是多种类型的,接口中成员变量必须用public  static  final修饰

    6)抽象类中允许有静态代码和静态方法,接口不能;

    7)抽象类的子类必须实现抽象类声明的所有方法,否则子类也必须声明为抽象类;类如果要实现一个接口,就必须实现这个接口声明的所有方法。

    6.基本数据类型占几个字节  (一个字节 = 8位)

    byte占1个字节           short占两个字节            int占四个字节                    long占八个字节

    char占两个字节          float占4个字节              double占8个字节              Boolean没有明确规定

    7.什么是多态

    1)定义:多态是同一个行为可以有多个不同表现形式或形态的能力。

    2)三要素:继承关系;子类重写父类方法;父类引用指向子类对象

    3)多态的好处:

       提高了代码的维护性;提高了代码的可扩展性

    4)多态的实现方式:

    接口实现,继承父类进行重写;

    同一个类中的重载

    5)转型:

    a.向上转型:1.子类引用的对象转换为父类类型称为向上转型。此处的父类可以是接口。

                         2.向上转型时,子类独有的方法会丢失,比如猫继承动物,猫中独有的抓老鼠方法,无法引用

                         3.子类引用不能指向父类

    b.向下转型:1.把父类对象转为子类对象

                          2.向下转型的前提是父类对象指向子类

                          3.向下转型只能转本类对象

    8.常见的流

    a.按流方向:输入流和输出流

    b.按输入数据大小:字节流和字符流

    c.按处理方式来分:处理流和节点流

    字符流可以转为字节流:inputstreamreader  (也可以用来指定字符编码)

    9.序列化

    相关文章

      网友评论

          本文标题:JAVA面试知识点小结

          本文链接:https://www.haomeiwen.com/subject/zupouctx.html