首先,让我们从简单的开始。所有不是构造函数的方法都需要返回类型。换句话说,
public void number(){
i = 1;
}
会更合适。
第二:main 方法传统上具有public static void main(String[] args) 的签名。
现在,谈谈您手头的问题。让我们考虑几个案例。我将打破一些常见的编码约定来表达我的观点。
案例 1
public void number(){
i = 1;
}
就目前的代码而言,您将遇到编译时错误,因为从未声明过i。你可以通过在课堂上的某个地方声明这个来解决这个问题。要访问这个变量,您需要一个Main 类型的对象,这将使您的类看起来像这样:
public class Main {
int i;
public static void main(String[] args) {
Main myMain = new Main();
myMain.number();
System.out.print(myMain.i);
}
public void number(){
i = 1;
}
}
案例 2
假设您不想将i 设为类变量。您只希望它是函数返回的值。您的代码将如下所示:
public class Main {
public static void main(String[] args) {
Main myMain = new Main();
System.out.print(myMain.number());
}
public int number(){ //the int here means we are returning an int
i = 1;
return i;
}
}
案例 3
前面的两种情况都会打印出1 作为它们的输出。但是让我们尝试一些不同的东西。
public class Main {
int i = 0;
public static void main(String[] args) {
Main myMain = new Main();
myMain.number();
System.out.print(myMain.i);
}
public void number(){
int i = 1;
}
}
在这种情况下,您认为输出会是什么?不是1!在这种情况下,我们的输出是0。为什么?
number()中的语句int i = 1;,它在number()的范围内创建了一个新变量,也称为i。只要number() 完成,该变量就会被清除。在public class Main 下声明的原始i 没有改变。因此,当我们打印出myMain.i 时,它的值为0。
案例 4
还有一个案例,只是为了好玩:
public class Main {
int i = 0;
public static void main(String[] args) {
Main myMain = new Main();
System.out.print(myMain.number());
System.out.print(myMain.i);
}
public int number(){
int i = 1;
return i;
}
}
这个输出会是什么?这是10。你为什么问?因为number() 返回的i 是number() 范围内的i,其值为1。但是myMain 的i 与案例3 一样保持不变。