zoukankan      html  css  js  c++  java
  • 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);
    }
    }

  • 相关阅读:
    重读金典------高质量C编程指南(林锐)-------第四章 表达式和基本语句
    重读金典------高质量C编程指南(林锐)-------第三章 命名规则
    重读金典------高质量C编程指南(林锐)-------第二章 程序的板式
    重读金典------高质量C编程指南(林锐)-------第一章 文件结构
    链表的基本操作---创建
    实现两个数的互换算法小结
    C++中引用与指针的区别
    以前写的一些小程序总结
    OPENCV中数字图像处理知识运用
    常见的论文查找办法
  • 原文地址:https://www.cnblogs.com/wangruihua-521/p/3159163.html
Copyright © 2011-2022 走看看