一、final关键字
final是java中的一个关键字,可以用来修饰变量,属性和类。用变量final修饰的域成为终极域。用变量final修饰的变量一旦复制旧不能改变,也称修饰的标识为常量。例如: 用final修饰的常量
public static final String PRODUCTINFO_PAGE_QUERY= "queryProductInfoPage";
public static final String PRODUCTINFO_AMNT = "amnt";
如果一个类是final关键字修饰,那就是希望这个类不被其他子类继承,例如 String,Double,Integer,Class;
java中java.lang包的内容是都不需要导入的,其它必须导入;从下图可以看出,顶级类在创建的时候默认的继承了java.lang.Object类 所以他的子类的所有都可以直接使用,比如String、Thread、Double 而Date是需要引用的。Thread.sleep(3000)可以直接使用是因为sleep()是静态方法。下图类创建的图可以看出,顶级类访问修饰符只能是 public(公共类)、final(不可继承类)、abstract(抽象类) 或者省略,不能是private、protected、static;
二、java 中main方法解析。
在java中,main()方法是java应用程序的入口方法。java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载。如果没有装载,那么就装载该类,并且装载所有相关的其他类。因此程序在运行的时候,第一个执行的方法就是main()方法。通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。 流程图如下:
开始试图执行类HelloApp的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过程如下: