zoukankan      html  css  js  c++  java
  • 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同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去换,人家把水果给换了,但是篮还是他之前的那个篮。(引用传递)

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

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

  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/c1024/p/11012036.html
Copyright © 2011-2022 走看看