zoukankan      html  css  js  c++  java
  • Java调用函数传递参数到底是值传递还是引用传递

    Java调用函数传递参数到底是值传递还是引用传递

     首先先声明一下,在Java中函数传参是值传递,不是引用传递。要弄清楚这个问题之前要先弄清楚什么是值传递,什么是引用传递。

      值传递(pass by value):是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

      引用传递(pass by reference):是指在调用函数时将实际参数的地址直接传递到函数中,这样在函数中如果对参数进行修改,将影响实际参数。

    1. 首先我们想看看值传递

      package  com.wecredo.agency.test;
      
      /**
       * @author 2S
       * @date 2020/8/31 16:22
       * @Description 值传递
       */
      public class ValuePassTest {
      
          public static void main(String[] args) {
              int a = 1;
              //传递基本数据类型,因为是将a的值传递给param,所以即便在pass函数中改变了
              //参数的值,a的值还是不会变。所以我们认为在传递基本数据类型的时候是值传递
              pass(a); 
              System.out.println("a= " + a);
          }
      
          private static void pass(int param) {
              param = 2;
              System.out.println("param= " + param);
          }
      }

      我们再看看引用传递打印的结果

    2. 我们再看看引用传递

       

    package com.wecredo.agency.test;
    
    /**
     * @author 2S
     * @date 2020/8/31 16:22
     * @Description  引用传递
     */
    public class Box {
        int num;
    }
    
    /**
     * 这里传递的是一个对象,引用传递
     */
    class CheckBox {
        public void check(Box box){
            box.num=100;
        }
    
        public static void main(String[] args) {
            Box box=new Box();
            box.num=10;
            System.out.println("调用之前box.num:"+box.num);
            CheckBox checkBox=new CheckBox();
            checkBox.check(box);
            //如果值修改了,就说说明是引用传递
            System.out.println("调用之后box.num:"+box.num);
        }
    }

     

    我们再看看引用传递打印的结果

     

    总结:基本类型和String类型传递时,都是值传递(String类型可以自行尝试一下),其他类型都是引用传递

  • 相关阅读:
    linux命令应用之一
    HIVE配置错误信息
    二分查找(JAVA)
    HBase1.0.1.1 API与原来有所不同
    hbase shell中log4j重复问题
    hadoop本地库无法加载
    利用mapreduce将数据从hdfs导入到hbase遇到的问题
    HBase伪分布式环境下,HBase的API操作,遇到的问题
    Hadoop开发中,如何开启、关闭控制台打印调试信息
    Hadoop的mapreduce开发过程,我遇到的错误集锦(持续更新)
  • 原文地址:https://www.cnblogs.com/shuxiaosheng/p/13590908.html
Copyright © 2011-2022 走看看