A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范泰洋 高级黑马   /  2012-10-12 00:57  /  969 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

特点:
随着类的加载而加载。
  也就是说:静态会随着类的消失而消失,说明它的生命周期最长。
优先于对象存在。
  明确一点:静态先存在,对象是后存在的,
被所有对象共享。
可以被类名所调用。

实例变量和类变量的区别:
存放位置。
   类变量随着类的加载而存在于方法区中。
   实例变量随着对象的建立而存在于堆内存中。
生命周期
  类变量生命周期最长,随着类的消失而消失。
  实例变量生命周期随着对象的消失而消失。


静态的使用注意事项:
静态方法只能访问静态成员。
  非静态方法既可以访问静态也可以访问非静态。{为什么既可以访问静态也可以访问非静态呢?因为静态成员优先于对象存在,它是随着类一加载运行就存在了,所以当对象一建立后,既可以调用非静态的成员,也可以调用静态成员。}
静态成员方法中不可以定义this,super关键字,
  因为静态优先于对象存在,所以静态方法中不可以出现this。{也可以联想到this关键字的应用来理解,this关键字是用来区分同名的实例变量的,实例变量是就是对象里面的变量,存在于堆内存中,所以需要的是对象建立之后才有的实例变量,还有的就是this关键字代表的是对象,那个对象调用它,它就代表那个对象。而静态方法优先于对象存在的,这时定义this关键字就没有意义了,因为它不知道要代表什么了!}
3.主函数是静态的。


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

弊端:生命周期过长。
      访问出现局限性。(静态虽好,只能访问静态的。)


成员变量也可以叫实例变量。随着对象的存在而存在。


什么时候用静态?
静态修饰的内容有静态成员变量和函数。

什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰。对象中的特有数据要定义成非静态存在于对内存中。{例如:中国人的的国籍都是中国,那么就是共有中国人都有的共享数据。所以可以被静态所修饰。而姓名能虽然大家都有的属性,但是每个人的名字都是不一样的,所以是特有的数据,不可以被静态所修饰。}


什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。{因为对象是用来封装数据和属性的,但是你定义的函数没有访问到对象中的数据或是属性的时候,这时候就没有必要创建对象了。可你又想要调用你定义的函数,这时候没有对象是不能调用类里面的函数的。但是你把这个函数用static来修饰的话,就可以直接调用类里面的方法了。这时候这些方法是在一个独立的区域存放的,不是栈内存,也不是堆内存,而是方法区。}

评分

参与人数 2技术分 +9 收起 理由
吴培丽老师 + 8 赞一个!
唐志兵 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马