WEB开发网
开发学院WEB开发Jsp 谈谈JAVA中的调用方式 阅读

谈谈JAVA中的调用方式

 2008-01-05 09:35:52 来源:WEB开发网   
核心提示:很多书籍都说java支持传引用调用的方式,类似于C++中的Person &a引用调用,谈谈JAVA中的调用方式,而近来编程碰到一系列问题让我对此产生了怀疑,于是将这些方法一一列出,不能设置其值,必须先构造它(即调用构造函数),我们来一起看看JAVA中的调用方式: 看下面的程序: class Person { PRi

  很多书籍都说java支持传引用调用的方式,类似于C++中的Person &a引用调用,而近来编程碰到一系列问题让我对此产生了怀疑,于是将这些方法一一列出,我们来一起看看JAVA中的调用方式:

 看下面的程序:

 class Person {

   PRivate String name;//姓名

  private String sex;//性别

  public Person(String x, String y) {
    this.name = x;
    this.sex = y;
  }

  public void setStatus(String x, String y) {
    this.name = x;
    this.sex = y;

  }

  public String toString() {

    return name + sex;

  }

  // -----交换普通对象-----
  public static void changeref(Person tmpx, Person tmpy) {
    //交换tmpx和tmpy对象
    Person swapref = tmpx;
    tmpx = tmpy;
    tmpy = swapref;
//    System.out.println("在方法中交换的结果: refa =" + tmpx.toString());
//    System.out.println("在方法中交换的结果: refb =" + tmpy.toString());
  }

  // ----- 交换数组对象-----
  public static void changeArrayRef(Person[] x, Person[] y) {

    //交换数组对象
    Person swaparrayref = x[x.length-1];
    x[x.length-1] =y[x.length-1];
    y[x.length-1] = swaparrayref;

  }
  

  //-----交换数组-----
  public static void changeArray(int[] x,int[] y) {
 
    int[] tmp =x;    
    x = y; 
    y = tmp;
    
    
  }
  

}



public class Demo {

  public static void main(String[] args) {
    
    //-------建立并构造两个对象---------
    Person refa = new Person("张三", "男");
    Person refb = new Person("李四", "男");

    //交换refa对象和refb对象
    Person.changeref(refa, refb);
    //从交换结果中看出,实际对象并未交换
    System.out.println("在主函数中交换的结果 refa = " + refa.toString());
    System.out.println("在主函数中交换的结果 refb = " + refb.toString());
        
    //-------建立两个对象数组----------
    Person[] arraya = new Person[1];
    Person[] arrayb = new Person[1];
    
    //分别构造数组对象
    arraya[0] = new Person("王五","男");
    arrayb[0] = new Person("赵六","男");
     
    /*数组对象为null时,不能设置其值,必须先构造它(即调用构造函数),再用其它方法设置其值
   */
   
    System.out.println(’\n’+"数组对象交换前的结果 arraya = " + arraya[0].toString());
    System.out.println("数组对象交换前的结果 arrayb = " + arrayb[0].toString());
    //交换这两个数组对象
    Person.changeArrayRef(arraya, arrayb);
    System.out.println("-交换后的结果 arraya = " + arraya[0].toString());
    System.out.println("-交换后的结果 arrayb = " + arrayb[0].toString());

    //-------建立两个普通数组---------
    int[] a = new int[2];
    int[] b = new int[2];
  
    //给数组个元素赋值
    for(int i =0;i<a.length;i++){
      a[i] = i;
      b[i] = i+1;
    }  
    
    System.out.println(’\n’+"数组交换前 inta[0] = " + a[0]);
    System.out.println("数组交换前 intb[0] = " + b[0]);
    
    //交换数组
    Person.changeArray(a,b);    
 
    System.out.println("-交换后的结果 inta[0] = " + a[0]);
    System.out.println("-交换后的结果 intb[0] = " + b[0]);
  
    
  }
}


 从程序执行的结果来看:在交换两个对象时,仅

Tags:谈谈 JAVA 调用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接