package Gaojiyuyan; //以学生举例,静态static关键字修饰成员 public class Static1Student { private int id; private String name; private int age; static String room; private static int idCounter=0; public Static1Student(){ idCounter++; } public Static1Student(String name, int age) { this.name = name; this.age = age; this.id=++idCounter; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package Gaojiyuyan; //一个成员变量使用了关键字,这个变量属于所在类,多个对象共享同一数据 public class Static1 { public static void main(String[] args) { Static1Student one=new Static1Student("刘亚华",100); one.room="hhhjiaoshi"; System.out.println("姓名:"+one.getName() +",年龄:"+one.getAge()+",教室:"+one.room +",学号:"+one.getId()); Static1Student two=new Static1Student("刘老秃",200); System.out.println("姓名:"+two.getName() +",年龄:"+two.getAge()+",教室:"+two.room +",学号:"+two.getId() ); } }
package Gaojiyuyan; /* 使用Static修饰成员方法,就是静态方法,静态方法不属于对象,属于类, 若没有static关键字,那么必须先创建对象,通过对象使用它 静态不能直接访问非静态 静态方法中不能有this:this表示当前对象,通过谁调用的方法谁就是当前对象 */ public class Static2StaticMethod { public static void main(String[] args) { Static2 abc = new Static2();//创建对象,才能使用静态方法 abc.method(); abc.methodStatic(); Static2.methodStatic();//推荐通过类名称调用。类名称。静态方法 // 注意:使用成员方法,在方法中要加static关键字,同时创建对象,否则“非静态方法不能从静态上下文引用” myMethod(); Static2StaticMethod.myMethod();//等效 } public static void myMethod(){ System.out.println("自己的方法"); } }
package Gaojiyuyan; //Static关键字修饰方法 public class Static2 { int num;//成员变量 static int numStatic;//静态变量 //成员方法 public void method(){ System.out.println("成员方法:"); //成员方法可以访问成员变量 System.out.println(num); //成员方法可以访问静态变量 System.out.println(numStatic); } public static void methodStatic(){ System.out.println("静分态方法:"); } }
package Gaojiyuyan; //静态代码块 public class Static3Person { static{ System.out.println("静态代码块执行"); } public Static3Person(){ System.out.println("构造方法执行"); }
package Gaojiyuyan; /* 静态代码块的格式是: public class类名称{ static{ //静态代码块的内容 } } 特点:当第一次用到本类时,静态代码块执行唯一的一次 静态内容总是优先于非静态,静态代码块比构造方法先执行 用途;用于一次性对静态成员变量进行赋值 */ public class Static3 { public static void main(String[] args) { Static3Person one=new Static3Person(); Static3Person two=new Static3Person(); } }
package Gaojiyuyan; //静态代码块 public class Static3Person { static{ System.out.println("静态代码块执行"); } public Static3Person(){ System.out.println("构造方法执行"); } }