代码改变世界

static小结

2013-02-25 14:36  littlelion  阅读(173)  评论(0编辑  收藏  举报

我们再创建类时,类中包含了属性和方法,但是这些东西并未被使用,只有在执行了new之后,才会生成数据存储空间,所以类中的属性和方法要想使用,一定是跟某个对象关联的。正常的情况时,创建一个对象,就生成一个数据存储空间。

但有特殊的需求:只用一个存储区域来放置一个变量,不管创建了多少对象,或者不创建对象时,变量也放在那个位置。又或者某个方法,我不创建对象也能够调用这个方法。可以说,这样的(static)属性和方法都不是跟对象关联在一起的。

static定义的是为整个类所共有的一块区域。通过类来调用,不需要实例化对象就能访问:类名.变量名 / 类名.函数名。

static可以修饰的东西:

  • 属性
  • 方法
  • 代码块
  1. static属性:访问方式:类名.变量名
  2. static方法:静态函数,不使用this,类调用,与对象无关
  3. static代码块:类中的一个代码块,存在于任何方法之外。静态代码块只执行一次,一般用来初始化静态成员

下面来看一个例子:

Java中的main函数写法是这样的:public static void main(String[] args){ //...// }

注意到main函数是static方法,这是因为main函数是整个程序的入口,一开始并不存在任何对象,所以main函数被定义为static。

Q:静态成员函数和全局函数

静态成员函数定义在类中,如果静态函数不定义在类中,那么它只是一个全局函数。

当调用静态成员函数时,不会把对象的句柄传递给它,因此它不能访问非static成员。


文中不足之处还望列位指出,谢谢。