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

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

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

  • 相关阅读:
    vuecli3.0 优雅使用svg
    解决vueRouter 跳转相同路由报错
    vue项目中使用 web worker 开启多线程
    项目经常使用的common.js 方法
    vue实现3D词云
    怎么禁止用户点击f12查看数据,查看网页代码,布局样式
    1:vue项目优化总结
    手写一个发布订阅
    vue3.0 reactive 理解
    ifram父子组件传参
  • 原文地址:https://www.cnblogs.com/c1024/p/11012036.html
Copyright © 2011-2022 走看看