Java的类与成员变量(2)

  由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。

  列3:

  class Person{
      //成员变量,实例变量
      String name;
      //静态变量,类变量
      //所有对象共享的属性用static修饰
      static String country = "CN";
      public void show(){
            System. out.println(country + ":" + name);
            //等效语句:System.out.println(Person.country+ ":" + this.name);
      }
}

  class StaticDemo{
        public static void main(String[]args){
              Personp = new Person();
              System. out.println(p.country);
              //可以用类名直接调用
              System. out.println(Person.country);
        }
  }

结果:

CN

CN 

6、成员变量和静态变量的区别

1、两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象被回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同

成员变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

3、别名不同

成员变量也称为实例变量。

静态变量也称为类变量。

4、数据存储位置不同

成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

7、成员变量、局部变量、静态变量列表对比:

成员变量、局部变量、静态变量的区别 

 

成员变量

 

局部变量

 

静态变量

 

定义位置

 

在类中,方法外

 

方法中,或者方法的形式参数

 

在类中,方法外

 

初始化值

 

有默认初始化值

 

无,先定义,赋值后才能使用

 

有默认初始化值

 

调用方式

 

对象调用

 

---

 

对象调用,类名调用

 

存储位置

 

堆中

 

栈中

 

方法区

 

生命周期

 

与对象共存亡

 

与方法共存亡

 

与类共存亡

 

别名

 

实例变量

 

---

 

类变量

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/550ee22002841624614305244fe32e0c.html