首页 > 代码库 > java --static

java --static

static修饰属性(类变量)
* 1.由类创建的所有对象,都共用这一个属性
* 2.当其中一个对象对此属性进行修改,会导致其他的对象对此属性的一个调用,即其他对象获取这个属性的值都是被修改过后的值。
* 3.类变量是随着类的 加载 而 加载 的,而且独一份。
* 4.静态的变量可以直接通过“类.类变脸”的形式来调用
* 5.类变量的加载是早于对象的,所以,当有对象之后,可以“对象.类变量”使用,但是“类.实例变量”是不行的。
* 6.类变量存在于静态域中。


static修饰方法(类方法)
* 1.随着类的加载而加载,在内存中独一份。
* 2.可以直接通过“类.类方法”的方式来调用
* 3.静态方法的内部只能调用静态的属性和静态的方法。因为它们 的生命周期是一样的。而不能调用非静态的。非静态的方法是可以调用静态的方法和静态的属性的。
* 静态的(static的属性,方法,代码块,内部类)结构的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构,
* >静态的方法里面是不可以有super和this关键字的。

 1 public class statication { 2     public static void main(String[] args){ 3         SportMan s1 = new SportMan("lee",23); 4         SportMan s2 = new SportMan("lei",21); 5         s1.name ="lie"; 6         s1.nation ="China"; 7         System.out.println(s1); 8         System.out.println(s2); 9         System.out.println(SportMan.nation);10         s1.show1(); 11         SportMan.show();12         s1.show();13     }14 }15 class SportMan{16     //实例变量(是随着对象的创建而被加载的)17     String name;18     int age;19     //类对象20      static String nation;21     public SportMan(String name, int age) {22         super();23         this.name = name;24         this.age = age;25         this.nation = "中国";26     }27     @Override28     public String toString() {29         return "SportMan [name=" + name + ", age=" + age + ", nation=" + nation30                 + "]";31     }32     public void show1(){33         System.out.println("我是一个普通方法");34         info();35         this.show();36         System.out.println("nation:"+nation);37     }38     public static void show(){39         //静态方法只能调用静态的属性,而不能调用一般属性40         info();41         //System.out.println("age:"+this.age)  这样写是错误的,生命周期不一样。42         System.out.println("nation:"+nation);43         System.out.println("我是一个类方法");44     }45     public static void info(){46         System.out.println("woshiyigejingtaidefangfa");47     }48     }

java --static