为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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 回答

静态是可以访问静态呀

0 回复 有任何疑惑可以回复我~
#1

Java_Hello_World 提问者

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

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

0 回复 有任何疑惑可以回复我~
#1

夜过初晨

系统扯淡了吧好像/(ㄒoㄒ)/~~ 我现在改了又可以了
2016-07-19 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

Java_Hello_World 提问者

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

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

0 回复 有任何疑惑可以回复我~
#1

Java_Hello_World 提问者

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

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       529932    人
  • 解答问题       6086    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信