是否可以将方法中的整数链接到类?

时间:2013-11-22 07:24:26

标签: java class methods integer declare

我有一个好奇的快速问题...如果我在一个方法中声明一个整数,例如:i = 1,我是否可以接受i并使用其值我的主要课程(或其他方法)?以下代码可能有助于理解我的要求......当然,根据答案的不同,代码可能不正确。

public class main {
  public main() {
    int n = 1;
    System.out.print(n + i);
  }

  public number(){
    i = 1;
  }
}

5 个答案:

答案 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;
  }
}