class Demo1
{
int num=1;
String color="blue";
static
{
System.out.println("static");
}
public static void show(Demo1 d)
{
System.out.println(d.num);
}
public static void main(String args[])
{
Demo1 d=new Demo1();
show(d);
System.out.print("main");
}
static
{
System.out.println("end");
}
}
静态成员函数不能调用非静态成员变量。静态成员先于对象存在那在show()里面怎么可以调用d.num。谁能给说一下该代码在内存中从加载到运行时的顺序。
{
int num=1;
String color="blue";
static
{
System.out.println("static");
}
public static void show(Demo1 d)
{
System.out.println(d.num);
}
public static void main(String args[])
{
Demo1 d=new Demo1();
show(d);
System.out.print("main");
}
static
{
System.out.println("end");
}
}
静态成员函数不能调用非静态成员变量。静态成员先于对象存在那在show()里面怎么可以调用d.num。谁能给说一下该代码在内存中从加载到运行时的顺序。
end
1
main
static
end
是由于 该类为启动类,即 java Demo1
所以jvm会主动使用 ,先加载 class ,然后初始化static模块的代码 ,顺序执行
然后执行main函数
public static void show(Demo1 d)
{
System.out.println(d.num);
}
静态成员函数不是优先于对象存在吗,在该函数被加载时 Demo1 d 并没有被创建,怎么能输出呢?
还有如果有一个静态成员变量 static int x=1;
它和show() main()加载的顺序是什么呢?
你掉用这个函数的时候不会传递一个对象吗
show(d);
d不是new 出来了吗