为什么错了?

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

1qazwsx

2018-08-24 13:32

ublic class HelloWorld {

    

    // 定义静态变量score1

    static int score1 = 86;

    // 定义静态变量score2

          int score2 = 92; 


    // 定义静态方法sum,计算成绩总分,并返回总分

public   static  int sum() { 

     

    int num=score1+HelloWorld.score2;

      

      return num;

}


public static void main(String[] args) {

        

        // 调用静态方法sum并接收返回值

int allScore = sum;

        

System.out.println("总分:" + allScore);

}

}


写回答 关注

4回答

  • 时代花园
    2018-09-10 16:03:31
    已采纳

    首先,  int score2 = 92; 和 int num=score1+HelloWorld.score2;矛盾,静态方法不能直接访问非静态变量,你的score2定义为非静态变量,但你的HelloWorld.score2却在直接访问score2,(注意,通过类名进行访问属于直接访问,非直接访问是指通过创建对象再调用对象的方式访问)。

    其次,int allScore = sum();   这句错了,你这是将‘sum()’作为一个变量直接赋给allScore。直接访问静态方法的意思是,不用通过创建对象的方式来访问,而是通过类名来访问,但是,不管是哪种方式访问方法,都要用上调用对象的基本格式,即“  对象名或类名.方法名(); "  , 所以正确的应该为 int allScore = HelloWorld.sum();


  • 慕神2039656
    2018-12-16 13:40:21

    1,应该是

    HelloWorld hellp=new HelloWorld();

    int sum=score1+hello.score2;

    非静态变量不能直接调用

    2.int allScore = sum;这个不对,sum只是一个局部变量,他的作用域只在sum()这个方法中,所以应该是

    int allScore=sum();

  • _夜归人__0
    2018-09-04 00:43:58
    1. 要求:定义静态变量score2为静态;

    2. int allScore = sum;你这里是赋值,不是调用方法

  • 慕瓜1133172
    2018-08-24 13:56:02

    https://img.mukewang.com/5b7f9de700014c7001760036.jpg静态变量


Java入门第二季 升级版

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

530655 学习 · 6091 问题

查看课程

相似问题