出于某种原因,当我尝试使用main方法调用方法或尝试更改在main方法之外声明的变量时,我不得不将所有内容更改为static。这在某些地方很好,但是当需要在代码中稍后更改值时,例如使用Scanner进行输入时,main方法只是将它提升到一个全新的水平,试图让我更改扫描程序库等。
This example shows what happens if I try calling a method.
在编写java代码之前,我从未遇到过这样的问题我尝试重新创建类/项目文件等但没有任何作用。我尝试到处寻找解决方案,但我似乎找不到一个可能是因为我不知道该搜索什么。我可能让自己看起来像一个正确的白痴我的头衔哈哈!有人建议吗?提前谢谢!
超蕸
答案 0 :(得分:1)
当调用方法形成一个main时,你必须实例化它们所在的类,除非它是一个静态函数
这是因为一个类是一种模板,在实例化之前没有任何东西保存过它
public class TestClass{
public static void main(String[] args){
TestClass testClass = new TestClass();
testClass.method();
}
public method method(){}
}
在上面的例子中,我实例化了一个TestClass,然后调用了testClass实例
你可能想要静态的类上有一些函数和变量,因为类上的静态在所有实例之间共享,并且可以在类上调用,比如你想知道创建了多少实例然后这样的东西可以做到。
public class TestClass{
public static void main(String[] args){
TestClass testClass = new TestClass();
testClass.method();
System.out.print(TestClass.instances +""); // note that i call on
//the class and not on an instance for this static variable, and that the + ""
//is to cast the int to a string
}
public static int instances = 0; // static shared variable
public TestClass(){instances++;} // constructor
public method method(){}
}
答案 1 :(得分:1)
一旦进入main()方法,退出“静态土地”可能会有点混乱。一种简单的方法是让另一个对象包含你的“真实”(非静态)顶级代码,然后你的main方法创建该对象并将其启动。
public static void main() {
MyEngine engine = new MyEngine();
// core logic inside of start()
engine.start();
}
我希望这对你来说已经足够清楚了。祝你好运Maisy!
答案 2 :(得分:0)
你需要做一些面向对象的编程教程并学习一些基础知识。
作为不使用静态调用问题的答案,您必须创建主类
的实例让我们假设以下类Foo
public class Foo{
private int myVarInteger;
public int getMyVarInteger(){ return this.myVarInteger;}
public void setMyVarInteger(int value){this.myVarInteger = value;}
public static void main(String[] args){
Foo myClassInstanceObject = new Foo();
// now we can access the methods
myClassInstanceObject.setMyVarInteger(5);
System.out.println("value ="+myClassInstance.getMyVarInteger());
}
}