我有一个好奇的快速问题...如果我在一个方法中声明一个整数,例如:i = 1
,我是否可以接受i
并使用其值我的主要课程(或其他方法)?以下代码可能有助于理解我的要求......当然,根据答案的不同,代码可能不正确。
public class main {
public main() {
int n = 1;
System.out.print(n + i);
}
public number(){
i = 1;
}
}
答案 0 :(得分:2)
不,你不能!除非你把它变成一个实例变量!
或者实际上将它作为参数发送给函数!
答案 1 :(得分:1)
首先,让我们开始吧。所有非构造函数的方法都需要返回类型。换句话说,
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
。为什么呢?
int i = 1;
中的语句number()
,它在i
的范围内创建了一个新变量,也称为number()
。一旦number()
完成,该变量就会消失。在i
下声明的原始public class Main
未发生变化。因此,当我们打印出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
。你为什么问?因为i
返回的number()
是i
范围内的number()
,其值为1. myMain
的{{1}},但是,与案例3一样,保持不变。
答案 2 :(得分:0)
是的,创建一个类成员:
public class Main
{
private int i;
public main() {
int n = 1;
System.out.print(n + i);
number();
System.out.print(n + i);
}
public number(){
i = 1;
}
}
答案 3 :(得分:0)
void method(){
int i = 0; //has only method scope and cannot be used outside it
}
void method1(){
i = 1; //cannot do this
}
这是因为i
的范围仅限于声明它的方法。
答案 4 :(得分:0)
您可以使用类范围字段将变量存储在类对象中,也可以从一个方法返回它或将其作为参数传递给另一个方法。请注意,您需要按正确的顺序调用您的方法,这不是最好的设计。
public class main {
int n;
int i;
public main() {
n = 1;
System.out.print(n + i);
}
public number(){
i = 1;
}
}