public static void main( String[] args )
{
int a = 11;
changeVoid( a );
System.err.println( "a = " + a );
int b = 11;
System.err.println( "b = " + changeReturn( b ) );
}
public static void changeVoid( int x )
{
x += 5;
}
public static int changeReturn( int x )
{
return x + 5;
}
a = 11
b = 16
为什么会这样
changeReturn的返回值是int,有啥不对啊???
你的问题根本不对啊,changeReturn函数没有改变参数啊,输出的是函数返回值啊。return x+5,就是返回x+5的结果,x参数值为11,所以返回16,输出OK
changeVoid()方法把传入的实参的值改变,但是这个传入的参数是main方法里传入的变量a的值的一个备份,对他的修改只能在changeVoid()方法看到变化,在main方法是看不到变化的,因为是对变量a的值的一个备份的修改,没有影响到变量a。
changeReturn()方法返回参数x+5的值,而这个值又在main方法直接打印这个值,而实际上b的值不是这个值,因为b的值没有进行修改,打印的只是changeReturn()方法返回实参x+5的和的这个值,而不是b的值。
测试代码如下:
public class ValueChangeTest {
public static void main( String[] args )
{
int a = 11;
changeVoid( a );
System.err.println( "a = " + a );
int b = 11;
System.err.println( "changeReturn( b )= " + changeReturn( b ) );
System.err.println( "b = " +b );
}
public static void changeVoid( int x )
{
x += 5;
System.out.println("in changeVoid(),x="+x);
}
public static int changeReturn( int x )
{
return x + 5;
}
}
改变参数的值??
没有改变参数的值。
System.err.println( "b = " + changeReturn( b ) )中的changeReturn( b )调用changeReturn函数,传参b的值。
public static int changeReturn( int x )
{
return x + 5;
}
函数体里面 就一条语句,返回 x+5的值,也就是16
然后在changeReturn( b ) 相当于16