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已经回答了,没有创建该类的对象,使用都是相同的静态域的信息
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
没有创建对象 ,
A类中这么用Test.f
B类中Test.f
在Test中第一次使用时,jvm把Test通过类加载器加载进来,放到静态方法区,属于公用的
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
靜態域生命週期幾乎與它的所在類同步
就是當它的所在類被加載時,該類中的靜態域也接著會被加載
類被卸載時也連同被卸載
類是遲加載的,差不多是類在運行時被使用到時。
------解决方案--------------------------------------------------------
这样更容易理解
static :类变量,一个类拥有的变量,不是每个实例拥有的变量
因此,只有一份