Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的方法应该是静态的?_Java_Methods_Static_Main - Fatal编程技术网

Java 为什么我的方法应该是静态的?

Java 为什么我的方法应该是静态的?,java,methods,static,main,Java,Methods,Static,Main,嗨,我有这段代码,我真的很困惑为什么我必须使lel方法是静态的。错误是“非静态方法不能从静态内容引用”。通常,当我创建方法来构造新对象或操作主方法中的对象时,我不会收到此错误消息。另外,我从未声明e是静态的!!。有人能给我解释一下为什么会这样吗??谢谢:) 您可以实施两种解决方案。第一个选项是使您的intlel(intk)成为一个类似于static intlel(intk) 您的另一个选项是声明类x的新对象,并将其用于main中的lel方法,正如注释中建议的助记符一样。该代码如下所示: e=新的

嗨,我有这段代码,我真的很困惑为什么我必须使lel方法是静态的。错误是“非静态方法不能从静态内容引用”。通常,当我创建方法来构造新对象或操作主方法中的对象时,我不会收到此错误消息。另外,我从未声明e是静态的!!。有人能给我解释一下为什么会这样吗??谢谢:)


您可以实施两种解决方案。第一个选项是使您的
intlel(intk)
成为一个类似于
static intlel(intk)

您的另一个选项是声明类x的新对象,并将其用于main中的lel方法,正如注释中建议的助记符一样。该代码如下所示:

e=新的x().lel(e)

我相信最简单的方法是使lel方法保持静态,但这取决于您


有关静态方法的更深入解释,请参见

您有两种方法。当你阅读非静态方法时,它指的是哪个方法?当你阅读时,不能从静态上下文中引用,你认为是哪个上下文(假设你有两个方法,其中只有一个是
static
)?长话短说静态方法属于类而不是对象。现在看看你的代码。您正在调用没有对象的非静态方法lel。快速问题:您认为
static
是什么意思?错误消息中没有任何内容告诉您该方法应该是静态的。“主方法中引用的任何代码也必须是静态的”完全不正确。否则就不可能有任何非静态方法。你自己的建议证明了这一点。当我写这篇文章时,我的想法不对,谢谢你指出,我把它从我的答案中删除了。
class x {

    public static void main(String[]args){

        int e= 2232;

        e= lel(e);

    }

    int lel(int k){
        return k+1;
    }
}