美文网首页Java语言基础
Java 基础知识点收集、系统化

Java 基础知识点收集、系统化

作者: SHAN某人 | 来源:发表于2018-06-26 21:12 被阅读13次

    1.熟悉Java String的使用,熟悉String的各种函数

    1.1 substring()方法在JDK6和JDK7中的区别
    1.2 字符串的不可变性
    1.3 String.valueOf和Integer.toString的区别
    1.4 Java中String“+”的重载
    1.4 replaceFirst、replaceAll、replace区别

    2.多线程

    2.1 CAS?CAS 有什么缺陷,如何解决?

    深入浅出CAS
    ABA问题分析与解决办法

    3 接口和抽象类有什么区别?

    1、 抽象类中可以有普通方法,接口不行
    2、 接口中的成员变量只能是 public、 static、 final 类型的
    3、 一个类只能继承一个抽象类,而一个类却可以实现多个接口
    4、 接口中的抽象方法可以不适用abstract修饰
    5、 接口中属性修饰默认是public static final (接口中只能为该类型),抽象类中默认修饰就是默认(抽象类成员变量可以是各种类型)

    4 抽象类可以继承具体类嘛?

    抽象类可以继承具体类,也继承了具体类的非私有方法。
    接口只能继承接口

    5 类的构造器支持重写嘛?

    构造器不支持重写

    6 java的修饰符与作用范围?

    修饰符 同一个类 同一个包 子类 全局
    private
    default
    protected
    public

    7 Error和Exception的区别?


    Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误,Exception 分为两种:

    • 受检异常 :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复;
    • 非受检异常 :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。

    7 final、finally和finalize的区别?

    final

    • 修饰变量,方法参数 只能被赋值一次
    • 基本类型 变量值不可变,相当于常量,多用是个好习惯
    • 对象 引用不可变,对象可变

    final 变量初始化

    • final变量可以在代码块中初始化,但不可以在静态代码块中初始化
      静态final 变量可以在静态代码块中初始化,而不可以在代码块中
    • final变量可以在类的构造器中初始化,静态final变量不可以
    • 修饰方法 ----> 不能被子类overwrite
    • 修饰类 -----> 不能被继承

    finally

    • 用在try/catch语句中,不管怎样都被执行
    • return、continue和break都不会阻止finally语句块的执行
      编译器在编译return new ReturnClass();时,将它分成了两个步骤,new ReturnClass()和return,前者在finally语句块前执行,而后一个在finally语句块后执行。

    finalize() 方法

    • Object类的方法,可以被任意类重写
    • 作用机制:
      GC清理从属的对象时调用,若执行过程抛出uncaught exception,GC将终止对改对象的清理。
    • 意义:建议GC启动,清理无用的对象释放内存空间,但是GC的启动并不是一定的,这由JAVA虚拟机来决定。
      如何所有对象的finalize()方法在JAVA虚拟机停止运行之前一定被调用呢?
      调用System类的runFinalizersOnExit方法并传入true。该方法不安全谨慎使用。

    8 java 内部类

    接口中有代码实现的情况,不大常见的情况

    正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则

    public interface InterfaceDemo extends InterfaceFather {
        int i = 10;
        //   private static int i = 1;  // 接口中不能有私有的方法和属性,默认就是public final static
        static void outer_f1() {
        }
    
        static class Inner {
            static int inner_i = 100;
            int inner_j = 200;
    
            static void inner_f1() {
                // 静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)
                System.out.println("Outer.i" + i);
                outer_f1();
            }
            void inner_f2(){
                System.out.println("");
            }
        }
    }
    

    参考链接: 深入理解Java:内部类

    相关文章

      网友评论

        本文标题:Java 基础知识点收集、系统化

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