美文网首页java
遗忘的java基础知识

遗忘的java基础知识

作者: random123 | 来源:发表于2020-03-25 19:38 被阅读0次

    java访问权限

    方法重写规则:

        (1)返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类

        (2)访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。被覆盖的方法不能是 private 的,否则只是在子类中重新定义了一个新方法。

        (3)声明为 final 的方法不能被重写。声明为 static 的方法不能被重写,但是能够被再次声明。

        (4)子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法;子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。

        (5)重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。


    接口和抽象类的区别

    抽象类与接口对比

            Java 8 中接口中会有 default 方法,即方法可以被实现。

    抽象类中可以存在属性(非静态),而接口中若有属性必须是静态属性(static)。也就是说,接口中只能存在抽象方法、静态属性;而抽象类中可以存在抽象方法,具体实现,非静态属性,静态属性等。

    JDK中常用的包

    JDK中主要的包

    String相关问题

         String源码

    string维护的是final字符串数组,不可变

           常量池(专门存储常量的地方,都指的是方法区中)分为编译常量池(不研究,存储字节码的相关信息)和运行常量池(存储常量数据)

    string对象创建过程

        StringBuilder与StringBuffer

                    StringBuffer中所有的方法都是用了synchronized修饰符,因此线程安全,但是开销大。

        String创建对象问题

    str1==str2/3 ,  与其他不相等

    (1)单独使用""引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;

    (2)使用new String("")创建的对象会存储到堆内存中,是运行期才创建;

    (3)使用只包含直接量的字符串连接符如"aa" + "bb"创建的也是直接量编译期就能确定,已经确定存储到常量池中(str2和str3);

    (4)使用包含String直接量(无final修饰符)的字符串表达式(如"aa" + s1)创建的对象是运行期才创建的,存储在堆中;

    (5)通过变量/调用方法去连接字符串,都只能在运行时期才能确定变量的值和方法的返回值,不存在编译优化操作.

    ++i与i++的区别

    熟悉的表述是:前置++是先将变量的值加 1,然后使用加 1 后的值参与运算,而后置++则是先使用该值参与运算,然后再将该值加 1。

    实际上:不管是前置 ++,还是后置 ++,都是先将变量的值加 1,然后才继续计算的。二者之间真正的区别是:前置 ++ 是将变量的值加 1 后,使用增值后的变量进行运算的,而后置 ++ 是首先将变量赋值给一个临时变量,接下来对变量的值加 1,然后使用那个临时变量进行运算


    java对象初始化顺序

    父类和子类的final static属性   >>   父类的static属性  >>  父类的static代码块  >> 子类的static属性

    >>  子类的static代码块  >> 父类的非静态变量属性  >> 父类的非静态代码块 >> 父类构造函数

    >>  子类的非静态变量    >>    子类的非静态代码块    >> 子类的构造函数

    总结:final static在类的准备阶段已经加载好,最优先;

                static优先于非静态; 属性优先于代码块; 父类优先于子类;

    throw和throws区别

    throw用在方法体内,表示抛出异常

    throws用在方法定义头部,表示可能的抛出异常类型。

    Arrays.sort 重写匿名函数进行降序

    常见排序的复杂度及稳定性比较

    相关文章

      网友评论

        本文标题:遗忘的java基础知识

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