Java入门第二季 1-9 程序问题

来源:8-9 Java 中的 static 使用之静态方法

Java_Hello_World

2016-03-10 16:49

在这个程序中,倒数第四行,我直接的访问静态方法,没有通过类名访问,也没有通过对象名访问,可还是得到了一个正确的结果,这是为什么呢?是碰巧吗?有什么弊端吗?

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);
	}
}


写回答 关注

4回答

  • 慕设计0765522
    2016-03-10 17:12:49
    已采纳

    静态是可以访问静态呀

    Java_H...

    谢谢。 那个时候刚看完“Java中的static使用之静态变量”,课程中写着:可通过“类名.静态变量”或者“对象名.静态变量”访问静态变量。之后看1-9“Java中的static使用之静态方法”,就没明白。 经过这两天的学习,总算是明白了,同一个类中,静态方法可以直接访问静态变量,也可以直接调用静态方法。

    2016-03-12 12:30:27

    共 1 条回复 >

  • 夜过初晨
    2016-07-19 19:11:01

    我用这个直接告诉我错误。。。

    夜过初晨

    系统扯淡了吧好像/(ㄒoㄒ)/~~ 我现在改了又可以了

    2016-07-19 19:12:21

    共 1 条回复 >

  • lucas7458563
    2016-03-10 17:24:53

    我认为这是个必然的结果,也没有什么弊端。因为不管是静态变量还是静态方法都是属于类的一部分而不是对象的一部分,就是说属于该类所有对象所共有的。且主函数也是static的,静态的方法可以调用静态的方法,不可调用非静态方法。因此代码能运行不出错。但为了代码的方便易懂、规范性,一般都是用类名.静态方法的调用方式,即HelloWorld.sum()。以上是我的个人见解,如有更好答案请分享下,谢谢!

    Java_H...

    谢谢。 那个时候刚看完“Java中的static使用之静态变量”,课程中写着:可通过“类名.静态变量”或者“对象名.静态变量”访问静态变量。之后看1-9“Java中的static使用之静态方法”,就没明白。 经过这两天的学习,总算是明白了,同一个类中,静态方法可以直接访问静态变量,也可以直接调用静态方法。

    2016-03-12 12:31:32

    共 1 条回复 >

  • liuzunl
    2016-03-10 17:15:31

    因为java代码的执行顺序是从上到下执行的 又因为sum()方法是静态方法已经在静态池中存入allScore 所以你在这个时候调用allScore是有值得

    Java_H...

    谢谢。 那个时候刚看完“Java中的static使用之静态变量”,课程中写着:可通过“类名.静态变量”或者“对象名.静态变量”访问静态变量。之后看1-9“Java中的static使用之静态方法”,就没明白。 经过这两天的学习,总算是明白了,同一个类中,静态方法可以直接访问静态变量,也可以直接调用静态方法。

    2016-03-12 12:30:52

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530093 学习 · 6086 问题

查看课程

相似问题