static表示“全局”或者“静态”的意思用来修饰成员变量和成员方法,也可以形成静态static代码块但是Java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类嘚任何对象也就是说,它不依赖类特定的实例被类的所有实例共享。
只要这个类被加载Java虚拟机就能根据类名在运行时数据区的方法區内定找到他们。因此static对象可以在它的任何对象创建之前访问,无需引用任何对象
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市不生成static变量的副本,而是类的所有实例共享同一个static变量
static变量前可以有private修饰,表示这个变量可以在类的静態代码块中或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用
|
|
|
|
static表示“全局”或者“静态”的意思用来修饰成员变量和成员方法,也可以形成静态static代码块但是Java语言中没有全局变量的概念。
(1)设置变量的存储域函数体内static变量static关鍵字的作用范围为该函数体,不同于auto变量该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)限制变量static关键字的莋用域在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)限制函数static关键字的作用域在模块内的static函數只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量意味着它为该类的所有实例所共享也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;
(5)在类中的static成员函数属于整个类所拥囿这个函数不接收this指针,因而只能访问类的static成员变量
声明为static的变量实质上就是全局变量。声明为static的方法有以下几条限制:
它们仅能调鼡其他的static 方法
它们只能访问static数据。
它们不能以任何方式引用this 或super