package io;
public class Employee {
private static int nextId = 1; //静态变量可以使用 类名.变量名 来调用
private String name;
public Employee (String name) {
//this代表当前类,this可以调用当前类内部的属性和方法,this关键字常用在构造器和get/set方法中
this.name = name;
System.out.println("构造器方法!");
}
//匿名代码块(先于构造器执行,但在静态代码块之后执行)
{
System.out.println("匿名代码块!");
}
//静态代码块(最先执行),JVM加载类时会自动执行静态代码块
static{
System.out.println("静态代码块!");
}
public String getName() {
int i = Employee.getNextId(); //非静态方法--可以调用静态方法和属性
return name+i;
}
public static int getNextId() { //静态方法可以使用 类名.方法名 来调用
//静态方法,必须实现方法体--- 不能调用非静态方法和非静态属性,也不能使用this,super关键字
return Employee.nextId; //直接调用静态成员变量,不能调用非静态成员变量,例:name
}
public static void main(String[] args) {
Employee e = new Employee("Harry");
System.out.println(e.getName()); //通过创建对象引用非静态方法
System.out.println(Employee.getNextId()); //静态方法直接调用
//总结:java类中的代码执行顺序
//静态代码块-->匿名代码块-->构造器方法-->main方法
}
}
运行结果:
静态代码块!
匿名代码块!
构造器方法!
Harry1
1
------------------------------------------------------------------------------------------
总结:java类中的代码执行顺序
静态代码块-->匿名代码块-->构造器方法-->main方法