1.5为什么需要public static void main(String[] args)这个方法?
main方法是Java程序的入口方法,JVM在运行的时候,会首先查找main方法,main方法的返回值必须是void,(可以理解为main就是一个树的根,从这个根开始执行后边的程序,如果有返回值得话,那么必然是返回到调用main这个方法的地方,但是main已经是根了,显然是不可能的)并且由static和public关键字修饰。
1.6在不执行main方法之前如何输出?
在Java中有static语句块,该语句块是全局静态语句块,在main方法加载之前加载,
package exe;
public class demo1 {
static {
System.out.println("I'm first!!!");
}
public static void main(String[] args) {
System.out.println("I'm second");
}
static {
System.out.println("I'm third");
}
}
执行结果:
I'm first!!!
I'm third
I'm second
初始化顺序:
- 静态对象优先于非静态对象初始化,其中静态对象只初始化一次,非静态对象可初始化多次;
- 父类优先于子类初始化;
- 按照成员变量的定义初始化。
父类static{}——>子类static{}——>父类{}——>父类constructor——>子类{}——>子类constructor。
1.7Java中作用域的区分
在Java中作用域的范围有三种区分:
- 成员变量:作用范围与类的实例化对象的作用范围一样,在类结束生命周期时一同结束。
- 静态变量:在类加载之前加载,在类消亡之后消亡,(被所有实例共享)
- 局部变量:仅仅在所出现的那对{}中存活。
Java中每个类或者方法都有其访问控制符,如果没有则都会隐含的表示。
1.8一个Java文件中有多少类?
一个Java文件可以定义多个类,但是最多只有一个类可以有public修饰,并且该类必须和文件名相同,如果这个文件中没有public类,则文件名随便是其中的一个类的名字,我们在使用javac指令编译 .java 这个文件时,它会为每一个类生成一个 .class文件。