1.问题:
当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余。可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?
答:可以的,可以通过static关键字来实现。static它是静态修饰符,一般用来修饰类中的成员。
2.static特点:
被static修饰的成员变量属于类,不属于这个类的某个对象。
public class A1 { //定义一个静态变量 public static int n = 1000; } class B1{ //程序入口 public static void main(String[] args) { //创建类A1的对象a1,a2 A1 a1 = new A1(); A1 a2 = new A1(); //改变静态变量的值 a1.n=20; System.out.println(a1.n);//结果为20 System.out.println(a2.n);//结果为20 /* static关键字修饰的成员变量,就是一个共享的资源 当对象在访问这个资源的时候,如果这个对象修改了这个共享成员变量, 那么其它对象访问这个共享资源时,这个共享资源值也已经改变 可以理解为公共资源 */ } }
被static修饰的成员,通过类名点静态变量或则方法名直接访问。
类名.静态成员变量名
类名.静态成员方法名(参数)
public class A1 { //定义一个静态变量 public static int n = 1000; public static void print(){ System.out.println("helloword"); } //程序入口 public static void main(String[] args) { int number=A1.n;//类名.静态成员变量名 A1.print();//类名.静态方法名 } }
3.需要注意是问题
静态的成员,随着类的加载而加载,优先于对象存在
不能使用this/super访问静态成员
同一个类中,静态成员只能访问静态成员
public class A1 { //成员变量 public int x = 100; //静态变量 public static double y=232.23; //静态方法 public static void method(){ //this.y 不能使用this/super访问静态成员。 System.out.println(this.y);//会报错 //同一个类中,静态成员只能访问静态成员 System.out.println(x);//会报错 System.out.println(y); } }
收藏
赞