java 知识小点
try{}catch{}finally{}
1 package com.xiaou.test1; 2 3 public class FinallyDemo { 4 // 第一种情况 5 public static int test1() { 6 try { 7 return 1; 8 }catch(Exception e) { 9 return 2; 10 }finally { 11 return 3; 12 } 13 } 14 // 第二种情况 15 public static int test2() { 16 int i = 0; 17 try { 18 i++; 19 return i; 20 21 }catch(Exception e) { 22 return 2; 23 }finally { 24 i--; 25 } 26 } 27 // 第三种情况 28 public static int test3() { 29 try { 30 int i = 1/0 ; 31 return i; 32 }catch(Exception e) { 33 return 1; 34 }finally { 35 System.out.println("我被执行了"); 36 } 37 } 38 public static void main(String[] args) { 39 // 返回的是3 40 // 因为finally代码块无论是报错还是在try代码块中return了他将都会执行 41 System.out.println(test1()); 42 // 返回的是1 43 // 因为在执行到return的时候会将值保存直到finally执行完成后返回, 44 //所以finally怎么改变这个值都不会受到影响 45 System.out.println(test2()); 46 System.out.println(test3()); 47 } 48 }
JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
java.lang 包中不能被继承的类
1 public final class Byte 2 public final class Character 3 public static final class Character.UnicodeBlock 4 public final class Class<T> 5 public final class Compile 6 public final class Double 7 public final class Float 8 public final class Integer 9 public final class Long 10 public final class Math 11 public final class ProcessBuilder 12 public final class RuntimePermission 13 public final class Short 14 public final class StackTraceElement 15 public final class StrictMath 16 public final class String 17 public final class StringBuffer 18 public final class StringBuilder 19 public final class System 20 public final class Void
继承
子类继承父类的所有成员,包括private、final、这些方法虽然不能被子类直接调用但是可以通过反射的方式调用,构造方法不属于成员所以不会被继承,但子类可通过super来调用父类的构造方法
Oracle官方文档 地址
A subclass inherits all the members (fields, methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited by subclasses, but the constructor of the superclass can be invoked from the subclass.
final 标识符
一:
1、final关键字可以用于成员变量、本地变量、方法以及类。
2、 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
3、 你不能够对final变量再次赋值。
4、 本地变量必须在声明时赋值。
5、 在匿名类中所有变量都必须是final变量。
6、 final方法不能被重写。
7、 final类不能被继承。
8、 没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。
9、被final修饰的变量,进行运算操作的时候不会自动改变类型
Java表达式转型规则由低到高转换:
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;