java值传递和引用传递的区别
发布网友
发布时间:2022-05-09 14:28
我来回答
共3个回答
热心网友
时间:2023-07-23 04:48
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
热心网友
时间:2023-07-23 04:48
值传递就像我注册一个新的百度账号给你,你可以升级、改密码、删账号,对我没影响。
引用传递就是我把自己的百度账号给你用,你要是改密码删账号,我的账号就真没了。
热心网友
时间:2023-07-23 04:49
1.基本类型和引用类型在内存中的保存
Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。
基本类型的变量保存原始值,即它代表的值就是数值本身;
而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,
对象本身存放在这个引用值所表示的地址的位置。
基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress,
引用类型包括:类类型,接口类型和数组。
相应的,变量也有两种类型:基本类型和引用类型。
2.变量的基本类型和引用类型的区别
基本数据类型在声明时系统就给它分配空间:
1
2
int a;
a=10;//正确,因为声明a时就分配了空间
引用则不同,它声明时只给变量分配了引用空间,而不分配数据空间:
1
2
3
4
5
6
7
Date date;
//执行实例化,开辟数据空间存放Date对象,然后把空间的首地址传给today变量
//date=new Date();
//如果注释掉上一步操作
//The local variable date may not have been initialized
//也就是说对象的数据空间没有分配
date.getDate();
看一下下面的初始化过程,注意"引用"也是占用空间的,一个空Object对象的引用大小大概是4byte:
1
2
3
Date a,b; //在内存开辟两个引用空间
a = new Date();//开辟存储Date对象的数据空间,并把该空间的首地址赋给a
b = a; //将a存储空间中的地址写到b的存储空间中
3.引用传递和值传递
这里要用实际参数和形式参数的概念来帮助理解,
值传递:
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:
也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;
在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
java值传递和引用传递的区别
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实...
java基本数据类型传递与引用传递区别
值传递与引用传递在Java中是面试中常见的概念,主要在函数参数的处理上体现。值传递表示方法接收的是实际参数的副本,而引用传递表示方法接收的是参数在内存中的地址。关键区别在于,方法对引用传递的参数所做的修改会影响到原始参数,而值传递的参数修改则不会影响原始值。下面通过代码示例进一步说明。首先,...
Java的值传递和引用传递
在Java中,基本数据类型的值传递是通过复制实参的值来实现的。例如,当你在方法内部对形参进行操作时,你实际上是在操作一个副本,这个副本与原始的实参在内存中是独立的。因此,对形参的任何修改都不会影响到原始的实参。接下来,我们探讨引用传递的概念。当参数为引用类型(如对象或数组)时,传递的不...
java中的值传递和引用传递到底有什么区别
值传递和引用传递的区别是什么
值传递和引用传递的区别在于参数值的和内存地址的不同。编程中,参数传递可以使用两种方式:值传递和引用传递。它们之间的主要区别在于传递的是参数的值还是内存地址。值传递是指将参数的值复制到函数的形参中,这样在函数内部对形参的修改不会影响到原始参数。这意味着,如果在函数内部对形参进行更改,原始...
搞清楚Java值传递还是引用传递
基本数据类型和引用数据类型的不同在于,基本类型数据直接存储在栈中,而引用类型数据存储在堆中,引用存储实际内容的地址。JVM通过方法调用将实参内容副本传给形参,因此对形参的修改不会影响实参。但Java中不存在引用传递,所有参数传递都是值传递,即传递内容副本。基本数据类型在方法中修改的是副本,引用...
Java是引用传递还是值传递?
Java是值传递。在Java中,当你调用一个方法并传递一个参数时,实际上是传递了一个原始变量的拷贝。这个拷贝可能是一个基本类型的值或者一个对象的引用。根据传递的参数类型,值传递行为有所不同:1. **基本类型**:当传递基本类型,如整数、布尔值、字符等,传递的只是值的拷贝。因此,方法中的修改...
java值传递和引用传递的区别java核心卷
不影响实际参数的值。引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。
【Java基础—数据类型】什么是值传递和引用传递
理解值传递与引用传递,需从变量存储机制入手。以Java为例,基本类型如整型(int)数据直接存储于栈内存,而对象类型数据如类(User)实例则存储于堆内存。值传递时,函数接收的是参数的复制,故原参数不改;引用传递则传递参数的内存地址,修改后影响原参数。在函数调用时,传递参数的方式决定变量在函数内部...
java新手关于基本参数传参和引用变量传参的区别
引用传递:在具体的实参传递到方法定义的形参的时候,传递的是引用的地址的拷贝,也就是对象在堆中的地址,这样的话指针指向实际对象的值是同一个,也就是你传递了引用,其实也就改变了对象本身。ps:也有一种说法是引用传递也是值传递,其实是不同的说法,本质上都是一样的。数组都是引用数据类型,...