在这个程序中,倒数第四行,我直接的访问静态方法,没有通过类名访问,也没有通过对象名访问,可还是得到了一个正确的结果,这是为什么呢?是碰巧吗?有什么弊端吗?
public class HelloWorld { // 定义静态变量score1 static int score1 = 86; // 定义静态变量score2 static int score2 = 92; // 定义静态方法sum,计算成绩总分,并返回总分 public static int sum() { int sum=score1+score2; return sum; } public static void main(String[] args) { // 调用静态方法sum并接收返回值 int allScore = sum(); //就是这里!!!! System.out.println("总分:" + allScore); } }
静态是可以访问静态呀
我用这个直接告诉我错误。。。
我认为这是个必然的结果,也没有什么弊端。因为不管是静态变量还是静态方法都是属于类的一部分而不是对象的一部分,就是说属于该类所有对象所共有的。且主函数也是static的,静态的方法可以调用静态的方法,不可调用非静态方法。因此代码能运行不出错。但为了代码的方便易懂、规范性,一般都是用类名.静态方法的调用方式,即HelloWorld.sum()。以上是我的个人见解,如有更好答案请分享下,谢谢!
因为java代码的执行顺序是从上到下执行的 又因为sum()方法是静态方法已经在静态池中存入allScore 所以你在这个时候调用allScore是有值得