Java里边什么是值传递和引用传递?两个有什么区别
2024-08-25 20:34:24
学过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同学买了一篮水果,但是回来后发现水果有坏的,于是他拿去换,人家把水果给换了,但是篮还是他之前的那个篮。(引用传递)
可能例子不是很恰当,但是能说明问题。
以上部分内容来自网络,有问题可以在下面评论,技术问题可以私聊我。
最新文章
- table 鼠标移上去改变单元格边框颜色。
- BLAST套件
- “CEPH浅析”系列之六——CEPH与OPENSTACK
- PE文件结构部分解析以及输入的定位
- Requirejs开篇
- mvc action 参数绑定——值提供器【学习笔记】
- jQuery Ajax全解析
- django的Model 模型中常用的字段类型
- ShareSDK第三方登陆 (IOS)
- 模仿jQuery的filter方法
- Java多线程由易到难
- Hessian源码分析--总体架构
- linux磁盘命令-lsblk显现磁盘阵列分组
- ES6 - Map
- ZOJ Problem Set - 2397 Tian Ji -- The Horse Racing
- Markdonw基本语法学习
- python Django 文件下载示例
- luogu P2113 看球泡妹子
- hdu 1394 Minimum Inversion Number - 树状数组
- JMeter学习(三十七)Jmeter录制手机app脚本(转载)