黑马程序员技术交流社区

标题: static作用 [打印本页]

作者: ___瘦不了    时间: 2014-8-25 11:41
标题: static作用
     static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。
     被static修饰的成员变量和成员方法独立与该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享
     只要这个类被加载,JAVA虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在他的任何对象创建之前访问,无需引用任何对象。
     用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。
     static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了,static前面加上其他访问权限关键字的效果也以此类推
     static修饰的成员表露和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
     类名.静态方法名(参数列表)
     类名.静态变量名
     用static修饰的代码块表示静态代码块,当JVM加载类时,就会执行该代码块
作者: alexchy    时间: 2014-8-25 14:46
看一下,再详细点
作者: 唤月    时间: 2014-8-25 22:02
来过…0         
作者: 付剑翊    时间: 2014-8-25 22:41
很详细,如果有点例子就更好了
作者: wyf20106    时间: 2014-8-25 23:02
学习了谢谢分享
作者: Louis.hui    时间: 2014-8-25 23:03
关键字,静态方法
作者: 忆梦追风    时间: 2014-8-25 23:16
路过看看,复习了
作者: Ezreal    时间: 2014-8-26 09:03
学习学习
作者: 小洁呵呵    时间: 2014-8-26 09:14
很详细如果有点例子就好了
作者: yaodd321    时间: 2014-8-26 09:49
static修饰的成员变量和方法可以被类名直接调用,楼主已经讲的很详细了。
class TStatic
{
     static int i;
     public TStatic(){
     i = 4;
      }
     public TStatic(int j){
     i = j;
     }
     public static void main(String args[]){
        TStatic a= new TStatic(5); //声明对象引用,并实例化
        TStatic b= new TStatic(); //同上
        System.out.println(a.i);
        System.out.println(b.i);
        System.out.println(a.i);
     }
}
最后的运行结果是4,4,4.Tstatic有两个构造函数,第一个用于初始化i为4,第二个用于初始化i为传进函数的值。程序首先声明对象的引用t,然后调用带参数的构造函数实例化对象,此时对象t的成员变量i的值为5,接着声明对象b,调用无参数的构造函数,那么就把对象b的成员变量i的值初始化为4了。
注意了,在这里i是static,那就是说该类的所有对象都共享该内存,那也就是说在实例化对象b的时候改变了i的值,那么实际上对象t的i值也变了,因为实际上他们引用的是同一个成员变量。
作者: viliv715    时间: 2014-8-26 10:07
总结的不错
作者: zuochbd    时间: 2014-8-26 10:21
这个东西, 要说是从C语言开始.
static修饰符修鉓的全局变量/局部变量/函数, 其作用域都是文件作用域.
在程序运行期间, static变量就一直在内存的静态区域(这个静态区域就是全局变量区).
然后C++在实现面向对象的功能时, 把static修饰的数据成员和函数成员都看成独立于对象, 并一直存在的东西.
这种static是面向对象必不可少的特性, 所以JAVA从C/C++那里沿用的static这个特性.
只是JAVA的虚拟机的内存分配简化为几个区, 其把.class对象放到方法区了, 必然的, 其中的静态成员和方法都在方法区了.
作者: 不淡定,小学生    时间: 2014-8-26 11:29
楼主谢谢呢
作者: ximi    时间: 2014-8-26 20:35
涉及到多线程的时候,注意线程同步,保证数据的一致性
作者: ︶喂〆快到碗里    时间: 2014-8-26 20:52
说的挺仔细的!挺好的分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2