0
public class Shape 
{
    public static void main(String args[]){
        int num = 0;
        cng(num);
    }

    public static void cng(int x){
        x = 52;
        System.out.println(x);
    }

}

如您所见,在cng方法中,我将 x 的值设置为 52,然后打印出 x 的值。

然后,回到 main 方法,对该变量cng执行该方法。num

但是,我想要做的是System.out.println(x); 在我的方法中没有函数的情况下将 52 的值设置为 xcng并打印出我的main方法中的值。我该怎么做呢?

我试着做

public static void cng(int x){
    x = 52;
}

进而

public static void main(String args[]){
    int num = 0;
    cng(num);
    System.out.println(num);
}

但它只打印出一个 0,因为 num 设置为 0。我认为cngnum变量执行会将其更改为 52,但事实并非如此。

4

5 回答 5

2

让你的 cng 方法返回一个 int 变量

public static int cng(int num){    
num = 52; 
return num; 
}

在您的 Main 方法中,分配从 cng() 方法返回的变量

int num = 0;
 num =cng(num);
 System.out.println(num);

或者:

您总是可以将 num 作为成员静态变量,

   static int num;
于 2012-11-23T08:26:41.813 回答
1

您想通过引用传递数据。这对于 Java 中的原始值(int、double、boolean 等)是不可能的。

您有以下选择:

  • 使其成为班级成员
  • 创建一个包装对象(对象引用也是按值传递的,可以在函数中更改该对象的成员,而不是对象引用本身)
  • 返回函数中的值(如其他答案所述)
于 2012-11-23T08:27:45.103 回答
1

尝试将您的代码更改为:

public class Shape 
{


public static void main(String args[]){
    int num = 0;
    num = cng(num);
    System.out.println(num);
}

public static int cng(int x){
    x = 52;
    return x;
}

}
于 2012-11-23T08:28:23.190 回答
1

阅读评论:

public class Shape 
{

    public static void main(String args[]){
    int num = 0;
    num = cng();   //store value returned by cng() in num
    System.out.println("num : " +num); // display num
    }

    public static int cng(){    //change return type to int
    return 52;
    }

}
于 2012-11-23T08:30:53.523 回答
0

这种行为的原因是参数在 Java 中是按值传递的。这意味着它只是您传递给它的变量的副本。因此,您所做的分配只是该方法的本地。

于 2012-11-23T08:31:50.813 回答