关于Java语言中参数传递详解
来源:优易学  2011-12-26 13:21:37   【优易学:中国教育考试门户网】   资料下载   IT书店

 以上特性是Java语言中的规定,在语法上无法指定参数传递是按值传递还是按址传递,但是可以通过下面的变换实现:
  1.对于按值传递的参数,如果需要在方法调用以后修改参数的值,可以利用返回值来实现;
  2.对于按值传递的参数,如果需要在方法内部修改时原来的参数不改变,则可以在方法内部重新创建该对象实现。
  示例代码如下:
  public class Test2{
  public static int t1(int n){
  n = 10;
  return n;
  }
  public static String t2(String s){
  s = "123";
  return s;
  }
  public static void t3(int[] array){
  //创建新的数组并赋值
  int[] newArray = new int[array.length];
  //数据拷贝
  System.arraycopy(array,0,newArray,0,array.length);
  newArray[0] = 2;
  }
  public static void main(String[] args){
  int m = 5;
  //重新赋值
  m = t1(m);
  System.out.println(m);
  String s1 = "abc";
  //重新赋值
  s1 = t2(s1);
  System.out.println(s1);
  int[] arr = {1,2,3,4};
  t3(arr);
  System.out.println(arr[0]);
  }
  }
  这样,程序的输出结果就将是:10 123 1.
  在实际的程序开发中,可以根据需要使用类似的结构来进行实现。
  下面再介绍一个参数传递的常见应用,利用参数传递实现返回值,这样的功能在IO类设计的read方法中大量使用。
  示例代码如下:
  public class Test3{
  public static void initArray(int[] array){
  for(int i = 0;i < array.length;i++){
  array[i] = i;
  }
  }
  public static void main(String[] args){
  int[] a = new int[10];
  initArray(a);
  for(int i = 0;i < a.length;i++){
  System.out.println(a[i]);
  }
  }
  }
  在该示例代码中,在initArray方法内部修改了数组的值以后,外部数组a的值也会发生改变,间接实现了返回值的效果。当然,在该示例代码中,因为只返回一个参数,所以作用体现的不明显,如果需要返回多个参数时,使用按址传递是一种不错的主意。

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训