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

  • 相关阅读:
    idea教程--面板介绍
    idea教程--使用mave创建普通java项目
    【Spring】Spring中的Bean
    【Spring】创建一个Spring的入门程序
    【Spring】 Spring的核心容器
    【玩转算法】1、总结,算法思想,加油
    【高级排序算法】3、归并排序法的优化
    【高级排序算法】2、归并排序法的实现-Merge Sort
    【高级排序算法】1、归并排序法
    【排序基础】6、插入排序法的改进与选择排序的效率比较
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/3164854.html
Copyright © 2020-2023  润新知