static示例
求生成对象的个数
1 class A{ 2 private int i; 3 private static int cnt = 0; 4 //此处用static修饰,让cnt属于类,多个对象共用一个属性,减少内存分配 5 6 public A(){ //new对象时,会自动执行无参构造方法 7 cnt++;//对象个数+1 8 } 9 10 //无参构造方法和有参构造方法在new对象时必须执行并且只能执行其中一个 11 12 public A(int i){//new对象并且传值时会调用有参构造方法 13 this.i = i; 14 cnt++;//对象个数+1 15 } 16 17 pUblic static int getCnt(){//用static修饰,属于类,通过类名直接调用 18 return cnt; //返回A对象的个数 19 } 20 } 21 22 public class TestStatic{ 23 public static void main(String[] args){ 24 System.out.printf("当前A对象个数是:%d个",A.getCnt());//0个 25 A a1 = new A(); 26 System.out.printf("当前A对象个数是:%d个",A.getCnt());//1个 27 A a2 = new A(); 28 System.out.printf("当前A对象个数是:%d个",A.getCnt());//2个 29 A a3 = new A(); 30 System.out.printf("当前A对象个数是:%d个",A.getCnt());//3个 31 } 32 }
限制:只生成一个对象
1 class A{ 2 public int i = 20; 3 private static A a = new A(); 4 //a既是A类的对象,也是A类的属性!指向a本身 5 //此处的static不能省略,下面的getA方法将会访问a对象(属性) 6 //不然静态方法将不能访问非静态成员 7 8 private A(){ //将构造方法设置为私有,这样就只能在本类里面创建对象 9 } 10 11 public static A getA(){ 12 //返回值类型是A,是一个地址类型,对象a的地址 13 //在其他类调用getA()方法,可以得到a对象 14 //注意此方法必须设置为static静态的,其他类可以不创建对象就能访问 15 return a; 16 } 17 } 18 19 public class TestStatic{ 20 public static void main(String[] args){ 21 A a1 = A.getA(); 22 A a2 = A.getA(); 23 a1.i = 99; 24 System.out.printf("%d",aa2.i); //输出99,说明a1和a2是同一个对象 25 //因为a1和a2的对象地址都是同一个getA()方法返回的a对象地址 26 } 27 }
如果真的不知道做什么 那就做好眼前的事情吧 你所希望的事情都会慢慢实现...