@songhanshi
2020-09-18T06:39:03.000000Z
字数 5474
阅读 404
博客
示例代码
JVMCase.java
public class JVMCase {
// 常量
public final static String MAN_SEX_TYPE = "man";
// 静态变量
public static String WOMAN_SEX_TYPE = "woman";
public static void main(String[] args) {
Student stu = new Student();
stu.setName("nick");
stu.setSexType(MAN_SEX_TYPE);
stu.setAge(20);
JVMCase jvmcase = new JVMCase();
// 调用静态方法
print(stu);
// 调用非静态方法
jvmcase.sayHello(stu);
}
// 常规静态方法
public static void print(Student stu) {
System.out.println("name: " + stu.getName() + "; sex:" + stu.getSexType());
}
// 非静态方法
public void sayHello(Student stu) {
System.out.println(stu.getName() + "say: hello");
}
}
Student.java
public class Student {
String name;
String sexType;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSexType() {
return sexType;
}
public void setSexType(String sexType) {
this.sexType = sexType;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
JVM 的整个处理过程
初始化类的静态变量和静态代码块为用户自定义的值,初始化的顺序和 Java 源码从上到下的顺序一致。
示例 1
private static int i = 1;
static {
i = 0;
}
public static void main(String[] args) {
System.out.println(i);
}
// print: 0
示例 2
static {
i = 0;
}
private static int i = 1;
public static void main(String[] args) {
System.out.println(i);
}
// print: 1
示例 3 : 子类初始化时会首先调用父类的 () 方法,再执行子类的 () 方法
Parent.java
public class Parent {
public static String parentStr = "parent static string";
static {
System.out.println("parent static fields");
System.out.println(parentStr);
}
public Parent() {
System.out.println("parent instance initialization");
}
}
Sub.java
public class Sub extends Parent {
public static String subStr = "sub static string";
static {
System.out.println("sub static fields");
System.out.println(subStr);
}
public Sub() {
System.out.println("sub instance initialization");
}
public static void main(String[] args) {
System.out.println("sub main");
new Sub();
}
}
输出
parent static fields
parent static string
sub static fields
sub static string
sub main
parent instance initialization
sub instance initialization