美文网首页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