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

静态方法中不能直接调用非静态成员,为什么代码中输出allScore会是正确的呢?

allScore 是非静态成员,在静态方法main中,为什么可以直接调用allScore,如:

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

提问者:liuzhiwei 2015-12-26 10:19

个回答

  • 吾怯二日
    2016-02-29 12:12:52

    这里的allScore是局部变量 只可以在此main方法中使用

  • 七九九
    2016-01-21 16:38:34

    首先得知道什么是成员变量。成员变量,又称全局变量,是在类的变量部分中定义的变量,和类的方法处于同一层次。静态变量和普通成员(或者说非静态)变量是对立的,他们都属于成员变量。而方法中的变量不属于成员变量,就是为了表达一些东西的代号,就是普通的变量(可以认为是局部变量)。这里的allScore不是成员变量,所以谈不上是非静态,而是一个只能在这个方法中使用的局部的变量。

  • 328992857
    2015-12-27 00:02:45

    allScore 是在main方法中 在自己的做用域内当然可以使用了,静态方法中不能调用非静态成员,你要搞明白 作用域 什么是作用域  就是{} 括起来的东西,就像的的心肝脾胃肾你自己的东西你当然可以用了

  • haha_0038
    2015-12-26 11:48:45

    你的allScore 是在方法内定义的吗?不看源码没法判断你的情况