黑马程序员—静态概述

 ----------- 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值