java中初始化块

来源:互联网 发布:linux删除文件恢复 编辑:程序博客网 时间:2024/06/06 09:44
package learn_20150504;import java.util.Random;public class Employee2 {private static int nextId;private int id;private String name="";private double salary;static{Random generator =new Random();nextId = generator.nextInt(1000);}{id = nextId;nextId++;}public Employee2(String n,double s){name = n;salary = s;}public Employee2(double s){this("Employee # "+nextId,s);}public Employee2(){}public String getName(){return name;}public double getSalary(){return salary;}public int getId(){return id;}}
package learn_20150504;public class ConstructorTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubEmployee2[] staff = new Employee2[3];staff[0] = new Employee2("harry", 4000);staff[1] = new Employee2(6000);staff[2] = new Employee2();for (Employee2 e : staff) {System.out.println("name = " + e.getName() + ",id= " + e.getId()+ ",salary= " + e.getSalary());}}}
运行结果:
name = harry,id= 975,salary= 4000.0
name = Employee # 976,id= 976,salary= 6000.0

name = ,id= 977,salary= 0.0

1 初始快是Java类里可出现的第四种成员(前面依次有:属性,方法,和构造器),一个类里可以有多个初始化块
相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行,初始化块的语法格式:
[修饰符]{
//初始化块的可执行代码
}
初始化块的修饰符只能是static,使用static修饰的初始化块被称为静态初始化块,初始化块里的代码可以包含任何可执行性语句
,包括定义局部变量,调用其他对象的方法,使用分支,循环语句等。

package learn_20150504;public class Person {//定义一个初始化块{ int a = 6; if(a>4) { System.out.println("Person 初始化块,局部变量a的值大于4"); } System.out.println("Person 的初始化块");}//定义第二个初始化块{System.out.println("Person的第二个初始化块");}public Person(){System.out.println("Person类的无参数构造器");}public static void main(String[] args) {Person p = new Person();}}

运行结果:
Person 初始化块,局部变量a的值大于4
Person 的初始化块
Person的第二个初始化块
Person类的无参数构造器代码块的执行顺序:
静态代码块 ----》 普通代码块-----》属性------》构造器


0 0
原创粉丝点击