您的位置:首页 > 编程语言 > Java开发

java中static的作用

2016-03-29 22:17 501 查看
1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享(因此可以用來统计一个类有多少个实例化对象),所以有些属性希望被所有对象共享,则必须将其声明为static属性,被static声明的属性成为全局属性。

2、只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

3、类中定义的静态代码块会优先于构造块先执行,而且不管有多少个对象,静态代码块只执行一次

例1:

class PersonE{

 private String name;

 private int age;

 private static String country = "A城";

 public PersonE(String name,int age){

  this.name = name;

  this.age = age;

 }

 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;

 }

 public static String getCountry() {

  return country;

 }

 public static void setCountry(String country) {

  PersonE.country = country;

 }

 public void info(){

  System.out.println("姓名:"+this.getName()+","+"年龄:"+this.getAge()+","+"城市:"+country);

 }

}

public class StaticUse {

 public static void main(String[] args){

  PersonE per1 = new PersonE("张三",20);

  PersonE per2 = new PersonE("李四",22);

  System.out.println("---------修改之前--------");

  per1.info();

  per2.info();

  System.out.println("---------修改之後---------");

  PersonE.setCountry("B城");

  per1.info();

  per2.info();

 }

}





例2:

public class StaticUse{

 private static int s;

 public StaticUse(){

  System.out.println("Creat new Class");

 }

 static{

  System.out.println("static block initialized");

 }

 public static int getS() {

  return s;

 }

 public static void setS(int s) {

  StaticUse.s = s;

 }

 public static void main(String[] args){

  StaticUse classA = new StaticUse();

  StaticUse classB = new StaticUse();

  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());

  classA.setS(10);

  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());

  classB.setS(classB.getS()+10);

  System.out.println("classA.s ="+classA.getS()+";classB.s ="+classB.getS());

 }

}





例子3、

class PersonE{

 private static int count = 0;

 public PersonE(){

  count++;

  System.out.println("产生了"+count+"个对象");

 }

}

public class StaticUse{

 public static void main(String[] args){

  new PersonE();

  new PersonE();

 }

}





例子4:

class PersonE{

 {

  System.out.println("1、构造块。");

 }

 static{

  System.out.println("0,静态代码块。");

 }

 public PersonE(){

  System.out.println("2、构造方法。");

 }

}

public class StaticUse{

 static{

  System.out.println("在主方法所在的类中定义的代码块。");

 }

 public static void main(String[] args){

  new PersonE();

  new PersonE();

 }

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java