JAVA细节知识整理

1.java中创建实例的几种方法:

   a.通过new创建 (调用构造方法)

   b.运用反射。即调用java.lang.Class/java.lang.reflect.Constructor类下的newInstance()方法(调用构造方法)

   c.clone(). (内存上已有的对象的副本)

   d.调用java.io.ObjectInputStream 的readObject 方法 (从文件中还原已有类的对象)

2.  ArrayList 的默认长度是10 例如:ArrayList list = new ArrayList();此时,其默认长度为10,如果之后要20个空间的话,就要扩充一次。但此时ArrayList list = new ArrayList(20);因为直接申请20个空间,这时就不需要扩充了,直接分配20个内存空间就行了。

3.常用的对称加密算法:DES 3DES RC2 RC4 AES TDEA

 非对称加密算法:RSA DSA ECC(椭圆曲线加密算法)D-H 背包算法 Rabin

 单向散列函数的加密算法:MD5 SHA

4.

public class Test {
    public static void test(){
        System.out.println("hello");
    }
    public static void main(String[] args) {
        ((Test)null).test();
    }
}

这几行代码是可以运行的。因为null可以强制转换成任何类型。比如:(int)null 就是一个合法的强制类型转换。

5.   静态语句块,构造语句块(在大括号里的语句),构造方法的执行顺序。

静态语句块,下来执行main方法,如果语句new了自己,就开始执行构造语句块,构造方法


6.多个catch捕获语句。此时如果出现错误将会从第一个 catch 匹配依次到最后一个,但是如果前面的错误类是后面的错误类的父类将不会匹配后面的子类错误,因此要将父类错误放在catch的最后。

7.java里没有引用传递,只有值传递。

8.抽象类和接口的区别

   a).接口是公开的并且不可以私有的变量和方法,抽象类就可以私有的变量或方法

   b).接口只能 implements 实现,抽象类只能 extends 继承(继承为单继承,实现为多实现)

   c).抽象类中可以有自己的数据成员,也可以有非 abstract 的方法,而在接口中只有静态的数据成员(一般不定义)所有的成员方法默认的都是 public abstract类型的。

   d).抽象类表现的是“is - a”的关系,接口表现的是 “has - a”的关系。

   e).实现接口要实现接口中的所有方法,抽象类中的方法可以选择需要的方法

 f ).接口中的变量默认的是public static final 类型的,一定要赋初值,且在实现类里面不能改变,而抽象类默认的friendly 类型的,它的值可以在子类中重新定义,也可重新赋值。




你可能感兴趣的:(java基础知识)