1.instanceof运算符是用来判断一个对象是否是指定类型的实例的。如果是指定类型的对象则返回true,否则返回false。
2.
下面代码的输出结果是什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1、inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,
2、catch捕捉异常,继续执行System.out.print(1);
3、当执行 thrownewRuntimeException(); 又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行
注:
还是需要理解Try...catch...finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了 。(throw抛出异常,让上级处理。会杀掉程序。finally还会继续执行) 如果catch中没有抛出RuntimeException,则执行结果为123。
输出:12
3. instance是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例
4.
被static修饰的语句或者变量有如下特点:
1.随着类的加载而加载
2.优先于对象存在
3.被所有对象所共享
4.可以直接被类名所调用
使用注意:
1.静态方法只能访问静态成员
2.静态方法中不可以写this,super关键字
3.主函数是静态的
静态代码块优先于主方法,且只执行一次
5.链接:
类的加载顺序
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数
其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)