public class TestStatic {
int id;
String name;
String pwd;
static String company ="杭州阿里巴巴";
public TestStatic(int id,String name){
this.id = id;
this.name=name;
}
public void login(){
PrintCompany();
System.out.println("company");
System.out.println("登陆:"+name);
}
public static void PrintCompany(){
//login(); //调用非静态成员变量,编译就会报错
System.out.println(company);
}
public static void main(String[] args){
TestStatic u= new TestStatic(101,"李寻欢");
u.PrintCompany();//这里会报错
System.out.println("###########");
u.company="深圳腾讯";
TestStatic.PrintCompany();
System.out.println("###########");
TestStatic.company="杭州网易";
TestStatic.PrintCompany();
}
}
运行结果: 杭州阿里巴巴 ########### 深圳腾讯 ########### 杭州网易
我们发现,虽然我们新建了一个对象u,但是其为company的属性名定义为静态变量后,我们只对对象的属性赋值,但是每次调用u.PrintCompany()时,只是相当于输出company,并非是u.conmpany,也没多进行赋值语句,却是直接输出的新赋值的company;所以得出结论:
静态变量从属于类,一般变量从属于对象!!其被该类定义的所有对象共享使用。
注:
且注意 静态只能调用静态,动态却可以反而可以调用静态!!