构造 私有 都是在对象存在的情况下为对象服务,当对象需要时就会执行,使用前提--------对象存在
只有静态:无论是静态的什么 ,都是随着类的加载而加载,但静态方法(无论什么方法)都是要调用的时候才执行的,关于引用,可以被类直接引用,一般不用对象引用(会造成空间浪费)
package Exercises;
import java.util.*;
class Employee1{
private static int nextId;
private int id;
private String name;
private double salary;
static//静态代码块:类加载时会初始化(会执行一次)——在且仅在类加载时执行
{
Random generator=new Random();//构造一个随机数生成器
nextId=generator.nextInt(1000);//生成一个0~999之间的随机数
System.out.println("*");//验证仅在类加载时执行
}
{//在对象创建时会执行(为对象服务)
id=nextId;
nextId++;
}
public Employee1(String n,double s){
name=n;
salary=s;
}
public Employee1(double s){
this("Employee1 #"+nextId,s);//传入名字和月薪进入上一个构造函数
}
public Employee1(){//默认初始化
//无参初始化
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public int getId(){
return id;
}
}
public class ConstructorTest_129 {
public static void main(String[] args){
Employee1[] staff=new Employee1[3];
staff[0]=new Employee1("Harry",4000);
staff[1]=new Employee1(60000);
staff[2]=new Employee1();
for(Employee1 e:staff){
System.out.println("name = "+e.getName()+"/ id = "+e.getId()+" /salary = "+e.getSalary());
}
}
}