当前位置: 代码迷 >> J2SE >> 【100分】static关于静态类的有关问题
  详细解决方案

【100分】static关于静态类的有关问题

热度:8586   发布时间:2013-02-25 00:00:00.0
【100分】static关于静态类的问题
class Test{
  static string f;
  static void fun()
}

Test中的方法和field都是静态的

我在A类中这么用Test.f
B类中Test.f  

请问一下 这时候Test的内存是如何分配的?
一共创建了几个对象?





------解决方案--------------------------------------------------------
探讨
class Test{
static string f;
static void fun()
}

Test中的方法和field都是静态的

我在A类中这么用Test.f
B类中Test.f

请问一下 这时候Test的内存是如何分配的?
一共创建了几个对象?

------解决方案--------------------------------------------------------
只占一份。我发一个代码给你去测试一下你看一下你就知道
package ch5;

public class C1 {

static int x=1;
int y=2;
public void ss(){
C1 c1=new C1();
C1 c2=new C1();
c1.x=10;
c2.x=15;
c1.y=10;
c2.y=15;
System.out.println(c1.x+","+c2.x);
System.out.println(c1.y+","+c2.y);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
C1 c= new C1();
c.ss();
}

}
------解决方案--------------------------------------------------------
http://www.cnblogs.com/wodepp2011/archive/2011/06/29/2151302
------解决方案--------------------------------------------------------
1L已经回答了,没有创建该类的对象,使用都是相同的静态域的信息
------解决方案--------------------------------------------------------
探讨

引用:

1L已经回答了,没有创建该类的对象,使用都是相同的静态域的信息


这位哥们 你说的“静态域”指的是啥?

------解决方案--------------------------------------------------------
没有创建对象 ,
A类中这么用Test.f
B类中Test.f
在Test中第一次使用时,jvm把Test通过类加载器加载进来,放到静态方法区,属于公用的 

------解决方案--------------------------------------------------------
探讨

哦。 好像懂了点。 我还想请教一下啊 。 一个 类 里面都是 static 的成员

他会占用多少内存 假设该class2000行代码

------解决方案--------------------------------------------------------
探讨
哦。 好像懂了点。 我还想请教一下啊 。 一个 类 里面都是 static 的成员

他会占用多少内存 假设该class2000行代码

------解决方案--------------------------------------------------------
靜態域生命週期幾乎與它的所在類同步
就是當它的所在類被加載時,該類中的靜態域也接著會被加載
類被卸載時也連同被卸載

類是遲加載的,差不多是類在運行時被使用到時。


------解决方案--------------------------------------------------------
这样更容易理解
static :类变量,一个类拥有的变量,不是每个实例拥有的变量
因此,只有一份
  相关解决方案