void return 改变参数的值

void return 改变参数的值

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


img

改变参数的值??
没有改变参数的值。
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