如果没有静态关键字,如何在任何方法之外使用变量?人们说不应该这样做,有更好的方法吗?
以下是一些代码:
public class Main{
private static int a = 0;
private static int b = 1; //<--- How to use these without the 'static' type?
public static void main(String[] args){ //Which will work here,
Okay();
}
public static void Okay(){ //And here?
if(a <= b){
System.out.println("Alright");
}else{
System.out.println("Okay Then");
}
}
}
答案 0 :(得分:3)
首先删除static
的所有用途(public static void main
除外,你需要那个)
在public static void main
中,创建一个Main
的实例并将其称为Okay
方法......
Main main = new Main();
main.Okay();
例如
public class Main {
private int a = 0;
private int b = 1;
public static void main(String[] args) { //Which will work here,
Main main = new Main();
main.Okay();
}
public Main() {
}
public void Okay() { //And here?
if (a <= b) {
System.out.println("Alright");
} else {
System.out.println("Okay Then");
}
}
}
虽然这可能看起来微不足道,但如果你有一个以多种不同方式修改值的类,那么使用像这样的实例类会更有意义,因为你可以根据需要创建任意数量的实例。他们会自己维护自己版本的值,允许你以不同的方式操纵不同的实例,而不会影响其他实例
您可能还想查看Understanding Class Members了解更多详情
您可能希望阅读Code Conventions for the Java TM Programming Language,这样可以让人们更轻松地阅读您的代码并让您阅读其他代码
答案 1 :(得分:0)
按照惯例,Java方法名称以小写字母开头。您可以将变量传递给方法
public static void okay(int a, int b)
或者您可以构造用户定义类型(自定义对象)并在那里调用方法。像,
class OkayClass {
int a;
int b;
// ... getters ... setters ...
public OkayClass(int a, int b) {
this.a = a;
this.b = b;
}
public void okay() {
// ...
}
}
然后
OkayClass oc = new OkayClass(1, 2);
oc.okay();
答案 2 :(得分:0)
创建static
方法的最常见用例是常用的实用方法。您将在java标准库中看到它们。请参阅Integer#parseInt()
,String#valueOf()
,java.util.Arrays
和java.util.Collections
中的几乎所有方法。 static
变量和方法与类相关联,而不是与该类的单个实例相关联。由于static
无法访问非静态变量,因此它们永远不会更改实例的状态。正如Elliott所提到的,您可以将变量传递给方法。
话虽如此,很多时候您需要在所有实例之间共享class'
状态或让用户修改该状态。在这种情况下,静态方法的静态变量是有效的。例如,您可能不希望所有城市都使用HashMap
个邮政编码,因此请标记Map
static
。