- Java code
public class Initialization { int a; char b; short s; float f; long lo; double dou; byte e; boolean flag; Object obj; public static void main(String [] args){ Initialization init = new Initialization(); // init.print(); //为什么这样可以执行,? System.out.println("int a="+a); //而这样就不可以?java是怎么给变量分配内存的? } public void print() { System.out.println("int a="+a); } }
------解决方案--------------------
main是静态方法,在main里无法直接引用具体对象的成员a,只能写成init.a的形式。
------解决方案--------------------
因为a不是静态的
静态方法里使用必须是静态成员变量
我猜测你的本意应该是用 System.out.println("int a=" + init.a);
------解决方案--------------------
非静态成员当然不能用在静态中,将a声明为static int a 就行了