• java 中的值传递和引用传递


    public class PassValue {

    /**
    * 值传递 基本数据类型参数
    * 值传递:方法调用时,实际参数吧他的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值
    */
    static void exchage(int a,int b){//静态方法,交换a,b的值
    int temp;
    temp =a;
    a=b;
    b=temp;
    }


    public static void main(String[] args) {
    /**
    int i =10;
    int j =100;
    System.out.println("befeore call:"+"i="+i+" "+"j="+j);//调用前
    exchage(i, j);
    System.out.println("after call:"+"i="+i+" "+"j="+j);//
    //说明:调用exchange(i, j)时,实际参数i,j分别把值传递给相应的形式参数a,b,在执行方法exchange()时,
    //形式参数a,b的值的改变不影响实际参数i和j的值,i和j的值在调用前后并没改变。
    */


    //引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,
    //在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
    Book b = new Book("java",32.22f);
    System.out.println("before call: ");
    b.output();

    /**
    *引用传递-对象作为参数
    *如果在方法中把对象(或者数组)作为参数,方法调用时,参数传递的是对象的引用(地址),即在方法调用时,实际参数把对对象的引用(地址)传递给形式参数。这是实际参数与形式参数
    *指向同一个地址,即同一个对象(数组),方法执行时,对形式参数的饿改变实际上就是对实际参数的改变,这个结果在调用结束后背保留了下来。
    */
    b.change(b,"php",25.6f);
    System.out.println("after call: ");
    b.output();
    //说明:调用change(b,"c++",25.6f)时,对象b作为实际参数,把引用传递给相应的形式参数a_book,
    //实际上a_book也指向同一个对象,即该对象有两个引用名:b和a_book。在执行方法change()时,对形式参数a_book操作就是对实际参数b的操作。
    }


    }


    class Book{
    String name;
    private float price;
    Book(String name ,float price){
    this.name=name;
    this.price=price;
    }

    static void change(Book a_book,String name, float price){
    a_book.name= name;
    a_book.price=price;
    }

    public void output(){
    System.out.println("name:"+name+" "+"price:"+price);
    }
    }

  • 相关阅读:
    转:测试驱动开发全攻略
    转:如何提高自己的归纳总结能力?
    转:从编译链接过程解析static函数的用法
    C++ 不能在类体外指定关键字static
    转:画图解释 SQL join 语句
    转:[置顶] 从头到尾彻底理解KMP(2014年8月22日版)
    转:The Knuth-Morris-Pratt Algorithm in my own words
    转:数组与指针的区别
    删除单链表中间节点
    如果判断两个单链表有交?第一个交点在哪里?
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/3164854.html
Copyright © 2020-2023  润新知