首页 > 其他 > 详细

从内存细看static

时间:2014-03-23 21:59:15      阅读:531      评论:0      收藏:0      [点我收藏+]

我们知道,当创建一个类时,就是对那个类的外观以及行为进行实例化,在执行New来创建的时候,就会分配一个数据存储空间。

但是,考虑到这两种情形时,以上的所说的分配的空间就是不满足,因为这空间是一对一映射的。第一种情形是,只想为某个特定域分配单一存储空间,不想创建多个对象,甚至,不用创建一个对象。还有一种情形是,希望某个方法不与它的类人和对象关联在一起,换一句老土的话来讲,就是几十没有创建对象,也能调用这个方法。

通过static可以满足我们的需求,当声明了一个事物是static时,就意味着,这个属性、域或者方法不会与包含他的那个类的任何对象实例关联在一起了。所以,即使为创建某个类的任何对象,也能调用其static方法或访问其static域。

案例分析

实例1.

Class StaticTest{

  static int i = 47 ;

}

StaticTest st1 = new StaticTest();

StaticTest st2 = new StaticTest();

虽然创建了两个StaticTest对象,StaticTest.i只会拥有一份存储空间,所以这两个对象共享同一个i。所以这st1.i和st2.i指向同一存储空间,因此他们具有相同的值47。如果 StaticTest.i++他们的值也会随之变化。

实例2.

System.out.println("helloword");

这个输出语句肯定常用,但是有人探究过没,System.out这个是静态类,是PrintStream类。由于不需要New所以可以直接调用其的方法。

从内存细看static,布布扣,bubuko.com

从内存细看static

原文:http://www.cnblogs.com/crazyBugs/p/3619236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!