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
方法。
然而,我想要做的是将值52设置为x而不使用System.out.println(x);
在我的cng
方法中运行,并在我的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.我认为在cng
变量上执行num
会将其更改为52,但事实并非如此。
答案 0 :(得分: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;
答案 1 :(得分:1)
您希望通过引用传递数据。对于Java中的原始值(int,double,boolean等),这是不可能的。
您有以下选择:
答案 2 :(得分: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;
}
}
答案 3 :(得分: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;
}
}
答案 4 :(得分:0)
此行为的原因是参数在Java中按值传递。这意味着它只是您传递给它的变量的副本。因此,您所做的任务仅限于该方法的本地。