问答详情
源自:8-9 Java 中的 static 使用之静态方法

想不明白为什么这样不行?

http://img4.mukewang.com/5e97cc7100013e3805660480.jpg   

  1. 第九行的sum 我只理解为一个方法,

  2. 11行的 return 我只理解为是一个返回值,并没有求和,return score1+core2 ,它还是会返回这个score1+score2

  3. 所有我个人理解 他是不是应该定义一个总分   如 int what = score1 +score2 ; 然后再返回 return what ;才合理呢?

  4. 调用方法我直接就可以写 HelloWorld.sum();

  5. 输出总成绩 what 

     我这样的理解难道有问题 ,课堂里的答案我理解不了

                                              

提问者:慕少1317773 2020-04-16 11:16

个回答

  • 慕丝5039221
    2020-09-04 10:38:27

    public class HelloWorld {

        static int score1 = 86;

        static   int score2 = 92; 



    public  static   int sum() { 

          HelloWorld a=new HelloWorld();

         int what=score1+score2;

          return what;

    }

    public static void main(String[] args) {

    int allScore = HelloWorld.sum();

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

    }

    }


    这样就行了,你最后的what没被传递

  • 艺术家派大星
    2020-07-21 14:59:09

     main方法里面,你HelloWorld.sum() 得到的是一个值,你需要将这个值赋给一个变量,再将它打印出来

    19行可以改写成

    		int what =sum();        		
    		System.out.println("总分:" + what);

    这个what和你静态方法(sum)里面的what是不一样的,你不能在main 里面直接调用 静态方法方法(sum)里面的what,也就是说你在main里面直接打印what是会报错的。

  • 慕容7097716
    2020-06-26 15:52:35

    我刚学到这里,我的理解是下面 main方法里少了声明一个int what来接收数据,

    方法里面return后面的数可以是 1,2,4,5,what,score1,score2都可以,跟main里面没有关系。main方法里需要用整型来接收HelloWorld.sum()方法的返回值。

    所以我觉得应该是上图里少了定义一个整型变量。


  • 单纯的根号三
    2020-06-08 13:02:24

    what 是局部变量,去不了别的方法里面。你把int what = 0写在在sum()方法。然后在sum()方法里面给what再赋值。

    因为score2是非静态变量,所以你得在sum()方法中创建一个对象去调用它:HelloWorld helloWorld = new HelloWorld();

    然后你再重新赋值:what = score1 + helloWorld.score2;

                                  return what;

    最后在main方法中创建一个变量去接收总分:int allScore = sum();

    然后控制台输出:System.out.println("总分:" + allScore);

  • 慕慕9044048
    2020-05-23 02:10:59

    what 是局部变量,去不了别的方法里面。所以最后一行代码哪个what会报错;另外19行代码,你只调用了return的值,但是没有显示的功能。

  • 慕娘2319265
    2020-05-20 15:39:32

    1. sun()确实只是一个方法;

    2. return只能返回一个值,return score1+core2 会先计算在返回

    3. 我觉得不太合理,注意sum方法,当你调用这个方法时你是不是已经知道这是求和的方法,你知道调用这个方法便会返回一个和,所以在这声明一个见名知意的变量名接收这个方法的返回值会不会更合理呢?换种说法,当我调用sun方法时,我知道这个方法是求和,它会返回一个值,当我需要多次使用它时,我会声明一个变量取个合适的变量名用来接收这个值,我并不需要sum方法里有个变量被赋予这个值,因为很多余,例如你写的what,它只是一个局部变量,我在别的方法里没法调用,这个方法的作用就是求和然后把结果这个值传递,所以直接return score1+score2即可,你先做的int what = score1 +score2 ;其实也就是将结果这个值赋给了what然后return what,最终结果也是传递这个值,所以没必要声明这个what变量在栈区中,很多余很浪费。

    4. HelloWorld.sum()现在是一个值,要么直接输出,要么声明变量赋值使用,单写HelloWorld.sum()没啥意义。

    5. 输出总成绩 what ,抱歉你没有这个变量,它是个局部变量,在sum方法结束时它就over了,所以。。。

  • 影式
    2020-05-16 11:40:39

    what只是一个局部变量,只能在sum()函数中使用,你在main方法中是无法调用这个变量的

  • 慕移动7175383
    2020-05-12 10:35:05

    是不是因为main方法中无法调用sum方法里定义的局部变量what

  • weixin_慕沐5243866
    2020-05-05 15:35:42

    "what"在mine函数中用不了


  • qq_慕雪0394078
    2020-04-21 23:17:52

    what 是一个局部变量,只能在定义它的方法内使用。而且sum()方法定义为int,那么他是有返回值的,你需要定义一个变量去接受他比如int sum1214=HelloWorld.sum();,最后输出sum1214或不要int sum1214=HelloWorld.sum()这一步直接输出sum()。

  • 无说有听mk
    2020-04-17 10:17:16

    sum()方法需要返回int数值,而return score1+score2,正是返回了(score1+score2)这个int值。

    sum()是静态方法,所以在main里也可以这么输出System.out.println("总分:" + sum());

    HelloWorld.sum()你这么写,并没有接受sum方法返回值,你要不这样接收返回值:int what = sum();

    要么直接输出System.out.println("总分:" + sum());