方法参数传递机制

15 篇文章 0 订阅
13 篇文章 0 订阅

方法参数传递机制

  • 实参:是调用方法时传进去的参数列表;

  • 形参:是方法声明是需要传递的参数列表;

1、形参是基本数据类型

  • 传递数据值

2、形参是引用数据类型

  • 传递的是地址值
  • 特殊类型:String、封装类等对象不可变性

3、代码案例

public class ParamTransmit {
    public static void main(String[] args) {
        int i = 1;
        String str = "hello";
        Integer num = 200;
        int[] arr = {1, 2, 3, 4, 5};
        MyClass myClass = new MyClass();
        
        chang(i,str,num,arr,myClass);

        System.out.println("i= " + i);
        System.out.println("str= " + str);
        System.out.println("num= " + num);
        System.out.println("arr= " + Arrays.toString(arr));
        System.out.println("myClass.a= " + myClass.a);
    }

    public static void chang(int j, String s, Integer n, int[] a, MyClass m) {
        j += 1;
        s += "word";
        n += 1;
        a[0] += 1;
        m.a += 1;
    }
}

class MyClass {
    int a = 10;
}

3.1、分析

1、类中执行main方法会在java栈中分配一块栈帧并初始化局部变量:

 int i = 1;
        String str = "hello";
        Integer num = 200;
        int[] arr = {1, 2, 3, 4, 5};
        MyClass myClass = new MyClass();

在这里插入图片描述

  • 基本数据类型直接存数值;
  • 字符串类型指向存储常量池中的地址;
  • 对象、数据指向存在堆中地址。

2、同样,类中change方法会在java栈中分配一块栈帧并初始化形参:


 public static void chang(int j, String s, Integer n, int[] a, MyClass m) {
       
    }

在这里插入图片描述

  • 基本数据类型传递数据值;
  • 引用类型传递的是地址值。

3、执行change方法中的代码

 		j += 1;
        s += "word";
        n += 1;
        a[0] += 1;
        m.a += 1;

在这里插入图片描述

  • 基本类型 j 传递的是数值,不会改变原来的值;
  • 字符串s 相加,需先在常量池查找或创建“word”对象,然后在生成一个相加拼接后的对象“helloword”,并改变s的指向地址;
  • 对象n 相加会生成一个新的对象201,并将指向该地址;
  • 数据a 元素的相加,会先找到对应下标的数组地址进行修改数值;
  • 对象本不会被改变,但对象的属性m.a可以改变,会找到对应的地址进行修改数值。

3.2、结果

i= 1
str= hello
num= 200
arr= [2, 2, 3, 4, 5]
myClass.a= 11
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值