黑马程序员—静态概述

来源:互联网 发布:淘宝店名名字 编辑:程序博客网 时间:2024/05/01 07:08

 ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

静态static:是一个修饰符,用于修饰成员(成员变量,成员函数),当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员

在定义事物时,哪些是共性的,哪些是特有的,一定要区分开,特有内容随着对象存储在堆内存中,被静态的内容不再存储在堆内存中。

 

 

class Person

{

      String name;

      static String country="CN";//国籍可以共享,因为国籍大部分一样

      public void show()

      {

            System.out.println(name+country);

      }

}

 

class StaticDemo

{

      public static void main(String[] args)

      {

            Person p=new Person();

            p.name="张三";

            //p.show();

            System.out.println(p.country);

            System.out.println(Person.country);//可以被类名调用

      }

}

 

 

那么被静态的内容存储到哪里了呢?

JAVA在启动时一共在内存中划分了5片空间来进行自己数据的存储,分别是栈区、堆区、方法区、本地方法区和寄存器

方法区(共享区,数据区):上面代码中的country就是被存放在方法区了,类中的方法也是存储在这里。

static的特点:

1.   随着类的加载而加载,随着类的消失而消失,生命周期最长

2.   优先于对象存在,对象不存在时它还在

3.   被所有对象共享

4.   可以直接被类名调用

 

class Person

{

      String name;//成员变量,实例变量(创建了对象它才存在)

      static String country="CN";//静态的成员变量,类变量(类名可以调用)

      public void show()

      {

            System.out.println(name+"::"+country);

      }

}

 

 

当这个类加载进内存时,country也会加载进内存,而name不会加载进内存,name

只有在创建了对象,在对象中才有name变量。

实例变量和类变量的区别:

1.          存放位置:实例变量随着对象的建立存放在堆内存中;类变量随着类的加载存放在方法区

2.          生命周期:类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失而消失

静态使用注意事项:

1.           静态方法只能访问静态成员(包括方法和变量),非静态方法既可以访问静态成员,也可以访问非静态成员。

2.           静态方法中不可以定义this,super等关键字(因为静态优先于对象存在,所以静态方法中不可以出现this)

3.           主函数是静态的

 

静态有利有弊:

   利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用。

   弊:生命周期过长,访问出现局限性。

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------ 

详细请查看www.itheima.com


 

0 0
原创粉丝点击