一、选择题知识点
1、异常类的理解
1.1 异常分类
1)所有的异常类是java.lang.Exception的子类。
2)异常分为检查性异常和非检查性的异常又叫运行时异常
3)所有检查性异常是继承自java.lang.Exception,除了RuntimeException以外的异常。
4)所有非检查性的异常都继承java.lang.RuntimeException类
1.2异常类处理
1)对于检查性异常:编译器要检查这类异常,检查的目的一方面是因为该类异常的发生难以避免,另一方面就是让开发者去解决掉这类异常,所以称为必须处理(try ...catch)的异常,或者Throw一直抛出异常。
2)对于非检查性异常(即运行时异常):不需要处理。
1.3 举例子:
1)非检查性异常:
ArithmeticException :除零异常
ArrayStoreExcetpion
ClassCastException
EnumConstantNotPresentException
IllegalArgumentException
IllegalThreadStateException
NumberFormatException
IllegalMonitorStateException
IllegalStateException
IndexOutOfBoundsException
ArrayIndexOutOfBoundsException :数组越界异常
StringIndexOutOfBoundsException
NegativeArraySizeException’
NullPointerException :控制针异常
SecurityException
TypeNotPresentException
UnsupprotedOperationException
2)检查性异常:
ClassNotFoundException
CloneNotSupportedException
IllegalAccessException
InterruptedException
NoSuchFieldException
NoSuchMetodException
IOException
FileNotFoundException
SQLException
2、TCP/IP参考模型中涉及到的协议
3、java程序初始化顺序:
(1)父类的静态变量、父类的静态代码块 (谁在前,谁先初始化)
(2)子类的静态变量、子类的静态代码块(谁在前,谁先初始化)
(3)父类的非静态变量、父类的非静态代码块、(谁在前,谁先初始化)父类的构造函数
(4)子类的非静态变量、子类的非静态代码块、(谁在前,谁先初始化)子类的构造函数
4、java运算符优先级:
5、静态内部类的理解
静态内部类与非静态内部类的差异:
(1)如是否可以创建静态的成员方法与成员变量(静态内部类可以创建静态的成员而非静态的内部类不可以)、
(2)对于访问外部类的成员的限制(静态内部类只可以访问外部类中的静态成员变量与成员方法而非静态的内部类即可以访问静态的也可以访问非静态的外部类成员方法与成员变量)。
这两个差异是静态内部类与非静态外部类最大的差异,也是静态内部类之所以存在的原因。了解了这个差异之后,程序开发人员还需要知道,在什么情况下该使用静态内部类。如在程序测试的时候,为了避免在各个Java源文件中书写主方法的代码,可以将主方法写入到静态内部类中,以减少代码的书写量,让代码更加的简洁。
(3)在创建静态内部类时不需要将静态内部类的实例绑定在外部类的实例上。
通常情况下,在一个类中创建成员内部类的时候,有一个强制性的规定,即内部类的实例一定要绑定在外部类的实例中。也就是说,在创建内部类之前要先在外部类中要利用new关键字来创建这个内部类的对象。如此的话如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。也就是说,普通非静态内部类的对象是依附在外部类对象之中的。但是,如果成员开发人员创建的时静态内部类,那么这就又另当别论了。通常情况下,程序员在定义静态内部类的时候,是不需要定义绑定在外部类的实例上的。也就是说,要在一个外部类中定义一个静态的内部类,不需要利用关键字new来创建内部类的实例。即在创建静态类内部对象时,不需要其外部类的对象。具体为什么会这样,一般程序开发人员不需要了解这么深入,只需要记住有这个规则即可。在定义静态内部类的时候,千万不要犯画蛇添足的错误。