值传递和引用传递的区别

待我称王封你为后i 2023-06-30 15:51 128阅读 0赞
一、值传递和引用传递

方法调用是编程语言中非常重要的一个特性,在方法调用时通常需要传递一些参数来完成特定的功能。Java语言提供了两种参数传递的方式:值传递和引用传递。

(1)值传递

在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临潼是的存储单元,因此形参和实参虽然有着相同的值,但是却有着不同的存储单元,因此对实参的改变不会影响形参的值。

(2)引用传递

在方法调用中,传递的是对象(也可以看作是对象的地址),形参和实参指向相同的一个地址,因此对形参的修改会影响实参的值。

(3)范围:

  1. 原始数据类型在传递参数时是按值传递;
  2. 包装类型在传递参数时是按引用传递;

(4)示例:

  1. package aaa;
  2. public class Test {
  3. public static void testPassParameter(StringBuffer ss1, int n) {
  4. ss1.append(" World"); //引用
  5. n = 8; //值
  6. }
  7. public static void main(String[] args) {
  8. int i = 1;
  9. StringBuffer s1 = new StringBuffer(" Hello");
  10. testPassParameter(s1,i);
  11. System.out.println(s1);
  12. System.out.println(i);
  13. }
  14. }

(5)运行截图:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 传递引用传递

    值传递传递的是值得地址,引用传递传递的是句柄的地址。 解释:值传递就是:比如new一个Object类型的对象,把引用给一个变量x,这个值(对象)和变量都会占内存(引用在栈中,

    相关 传递,地址传递引用传递

    什么是值传递,地址传递和引用传递?它们有什么不同?这在学校考试,找工作面试中都是常见的问题。它们之间的区别容易搞错,长时间不用也容易忘记。最近又被问到这个问题,想想还是整理一下

    相关 传递引用传递

    下面有一个代码非常好帮助理解 我的理解是: 引用在栈中,存储变量堆地址。实际变量在堆中。引用指向变量。 方法参数传递的是堆中地址的值(其实也是栈中变量存储的值),是