static 关键字

来源:互联网 发布:黑石集团知乎 编辑:程序博客网 时间:2024/05/10 05:06

static 关键字的用法  :


   作用:


1)设置变量的存储域,函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

2)限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

 

  (3) 

   

   静态分配的,有两种情况: 1. 用在类里的属性、方法前面,这样的静态属性与方法不需要创建实例就能访问,            通过类名或对象名都能访问它,静态属性、方法只有“一份”:即如果一个类新建有N个           对象,这N 个对象只有同一个静态属性与方法;
2.  方法内部的静态变量:   方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,   它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别;             -----------------试了一下方法内部 声明static变量是无效的。 


什么情况下把类方法定义为static ?

查询 数据量大,操作情况多的与数据库交互的方法是static好还是不是static好?

静态方法和实例方法唯一的区别是 静态方法不依赖实例 而实例方法必须依赖实例,那么节省产生实例的内存 空间;

  静态方法很有用,比如一个类里面构造函数你用静态的了,然后用它来读取配置文件,那么你第2次以后访问该类就不需要再跑一遍代码了,效率提高了的



方法占不占用更多内存,和它是不是static没什么关系。

  
因为字段是用来存储每个实例对象的信息的,所以字段会占有内存,并且因为每个实例对象的状态都不一致(至少不能认为它们是一致的),所以每个实例对象的所以字段都会在内存中有一分拷贝,也因为这样你才能用它们来区分你现在操作的是哪个对象。  
 
但方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。因此无论是static还是non-static的方法,都只存在一份代码,也就是只占用一份内存空间。   
同样的代码,为什么运行起来表现却不一样?这就依赖于方法所用的数据了。主要有两种数据来源,一种就是通过方法的参数传进来,另一种就是使用class的成员变量的值……





原创粉丝点击