/*************************************************
关于 static
**************************************************/
public class Test2 {
static int number=0;
private String name;
String ID;
Test2(String stuName,String stuID){
name=stuName;
ID=stuID;
}
//**********************************
static int count=0; //静态
int count2=0; //新添实例
public Test2() {
count++;
}
//**********************************
@SuppressWarnings("static-access")
public static void main(String[] args) {
count++;
// count2++; !!!!!此处用实例不可,因为main为static;静态方法不能获取实例成员
// System.out.print(Test2.count2);
Test2 q1=new Test2("小张","01");
System.out.println(Test2.number);
Test2 q2=new Test2("小王","02");
System.out.println(q1.number);
System.out.println(q2.name);
//**********************************************
System.out.println("*****************");
System.out.print("1. "+Test2.count+" ");
Test2 a1=new Test2();
System.out.print("2. "+a1.count+" ");
System.out.print("3. "+a1.count+" ");
System.out.print("4. "+Test2.count+" ");
Test2 a2=new Test2(); //每加载一次,便加一
System.out.print("5. "+Test2.count+" ");
System.out.println("6. "+a2.count+" ");
//***********************************************
System.out.println("*****************");
Tstatic b1=new Tstatic();
System.out.print("1. "+b1.x+" ");
b1.x++;
System.out.print("2. "+b1.x+" ");
System.out.print("3. "+Tstatic.x+" ");
Tstatic b2=new Tstatic();
b2.x++;
System.out.print("4. "+b1.x+" ");
System.out.print("5. "+b2.x+" ");
System.out.println("6. "+Tstatic.x+" ");
//##
Tstatic b3=new Tstatic();
Tstatic b4=new Tstatic();
b3.x++;
b4.x++;
Tstatic.x++;
// x++; !!!!此处不能用x++,不在同一类中,必须加上对象名或类名(static)
//若static 成员 在同一类呢?【row 20】
b3.x++;
System.out.println("1. "+b3.x+" "+"2. "+b4.x+" "+Tstatic.x+" ");
//******************************************
//此处y不是静态成员,所以对象不共享,也不能用Tstatic.y【row 66】【warning:不能对非静态字段 Tstatic.y 进行静态引用】
//如果在非静态方法中应用呢?【见row 72~73】
//如果在main里呢?【row 22】相同的warning
b3.y++;
b4.y++;
System.out.println("1. "+b1.y+" "+"2. "+b2.y+" "+"3. "+b3.y+" "+"4. "+b4.y);
// System.out.println(Tstatic.y);
}
}
class Tstatic {
static int x=100; // 此处没有添加private,因为不同类main中x不可视
//若在同一类的成功示范【row 7 private String name】
// x++; !!!!此处不能用直接x++,因为不在方法内,报错
int y=0;
/* public Tstatic() {Tstatic.y;} !!!!!【warning:不能对非静态字段 Tstatic.y 进行静态引用】
public void a() {Tstatic.y;}
*/
}
当前为粗略概括
将继续分类细致整理