首先要了解静态方法和非静态方法(实例方法)之间的不同,静态方法在整个程序刚开始运行就已经加载了,而非静态方法是当new了一个对象的时候才会被加载到,他比静态方法后执行。
你的第一个例子a,b变量都是非静态变量,是无法在静态变量中使用的,因为静态方法加载时非静态变量还没有加载肯定无法使用。第二个例子静态变量可以在非静态方法中使用,结合上面说的静态变量或方法都优先于非静态方法或变量加载,当然等加载到非静态方法时静态变量已经初始化赋值完毕了。总得来说就是加载顺序的问题:静态方法或变量>非静态方法或变量
因为给变量加上static关键字后,此变量变为全局变量。
然后你在函数方法输出也好使用也好,就不会报错了。
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!
非静态变量a是属于对象的,不属于类,也就是说,你只能在main方法中new Test()创建对象后才能调用a。
同样的,你的test方法是非static的,也就是说,test方法属于对象,即对象方法能直接调用对象成员变量。
因为a不是静态变量 它是普通变量 静态变量需要用 static关键字 你可以尝试打断点尝试一下