static关键字

来源:互联网 发布:武汉网站seo顾问 编辑:程序博客网 时间:2024/06/16 14:54

static关键字可以修饰方法(main),成员属性(country)
  加载时机随着字节码加载而加载,优先堆内存中创建,加载到方法区中的静态区
 每个对象可以共用当前的静态数据,静态数据依附于类,不用创建对象就可以调用。

对静态变量的调用取决于穿件对象时先后顺序。

静态数据存在在方法区,随着类的加载而加载。创建对象的过程中,调用构造方法,尽管在调用构造方法时对变量赋值,显示的是 meiguo,但是,对象最后输出的时候是调用第二次对静态变量所赋的值。

对象的创建过程:在堆内存中开辟空间后,首先是默认初始化。然后是成员变量的显示初始化。最后是构造方法里面的对成员变量赋值。输出的是构造方法中所赋的成员变量的值。(此成员变量不带static修饰),当有static修饰时,这个共用变量的值就是最后一次创建对象时对这个变量所赋的值,应该是最后一次构造参数的赋值。

public class Person {
 String name;
 static String country="canada";
 
 public Person(String name){
  this.name=name;
  
 }
 public Person (String name,String country){
  this.name=name;
  this.country=country;
  System.out.print(this.country);
 }

 Person p1=new Person("xx", "中国");
  Person p2=new Person("LX");

这种情况下 输出的都是中国。最后一次构造对象时没有对静态变量赋值