• Java里边什么是值传递和引用传递?两个有什么区别


    学过java基础的人都知道,在java中参数的传递过程中有值传递和应用传递,那么这两个到底有什么区别呢,下面我通过例子为大家详细的介绍下。

    我们都知道Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。

    首先我们通过一个例子说明值传递

    static int data = 200;
    public static void main(String[] args) {
    	modifyValue(data);
    	System.out.println(data);
    }
    	
    public static void modifyValue(int data) {
    	data = 100;
    }

    运行以上代码你会发现data还是200,这是为什么呢,这是因为int是基本的数据类型,属于值传递

    下面我来看什么是引用传递

    	static int[] arrNum = {1,2,3,4,5};
    	public static void main(String[] args) {
    		modifyArrValue(arrNum);
    		for(int i=0;i<arrNum.length;i++) {
    			System.out.println(arrNum[i]);
    		}
    	}
    	
    	public static void modifyArrValue(int[] arrNum) {
    		for(int i=0;i<arrNum.length;i++) {
    			arrNum[i] = 0;
    		}
    	}
    	

    我们来看结果是4个0,是不是很意外,因为这个地方是引用类型的。

    可能看了上面的例子之后有的同学还是不理解什么是值传递,什么是引用传递。我给大家举个非常简单的例子:

    A同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去人家给他重新换了一栏。 (值传递)

    A同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去换,人家把水果给换了,但是篮还是他之前的那个篮。(引用传递)

    可能例子不是很恰当,但是能说明问题。

    以上部分内容来自网络,有问题可以在下面评论,技术问题可以私聊我。

  • 相关阅读:
    C++标准库vector以及迭代器
    (转)单链表的逆置
    (六)通过solr7的API实现商品的列表查询
    (八)solr7实现搜索框的自动提示并统计词频
    (四)DIH导入结构化数据
    (三)Solrj4到Solrj5的升级之路
    easyui validatebox 验证类型
    一、docker临时记录
    vip视频网站爬虫
    Intellij IDEA 4种配置热部署的方法
  • 原文地址:https://www.cnblogs.com/c1024/p/11012036.html
Copyright © 2020-2023  润新知