引言

Java 方法参数的传递规则:基于值的传递;

Java 方法参数传递只有一种方式,基于值的传递,是变量值的复制;

基本类型就是其中值的复制、引用类型是引用值(地址)的复制


案例演示

通过下面代码演示Java中值的传递过程

 1package com.ant.param;
2
3public class ParameterDemo {
4
5    public static void main(String[] args{
6        int a =1;   add(a);
7        Koo koo = new Koo();   add(koo);
8        System.out.println(a + "," + koo.a);
9        System.out.println(koo);
10    }
11
12    public static int add(int a){
13        a++;return a;
14    }
15
16    public static int add(Koo koo){
17        Koo k =koo;
18        k.a++; return koo.a;
19    }
20}
21
22class Koo{
23    int a = 1;
24}
25
26运行结果如下:
271,2
28com.ant.param.Koo@15db9742

程序执行过程中的内存图如下所示:

第1步:

Java中方法参数的传递规则?_Java

第 2 步:值传递(将实参的值传递给形参)

Java中方法参数的传递规则?_Java_02

第 3 步:执行方法体内部代码

Java中方法参数的传递规则?_Java_03

第 4 步:方法迒回,回收临时变量

Java中方法参数的传递规则?_Java_04

第 5 步:调用 Koo 默认无参构造器,在堆内存中创建对象

Java中方法参数的传递规则?_Java_05

第 6 步:将堆内存中对象存储地址赋值给 koo = com.ant.param.Koo@15db9742

Java中方法参数的传递规则?_Java_06

第 7 步:值传递(将实参的首地址传递给形参)

Java中方法参数的传递规则?_Java_07

第 8 步

Java中方法参数的传递规则?_Java_08

第 9 步

Java中方法参数的传递规则?_Java_09

第 10 步:add(Koo koo)方法返回,回收临时变量

Java中方法参数的传递规则?_Java_10

第 11 步:输出

Java中方法参数的传递规则?_Java_11


变量的值:基本类型的值是其本身,引用变量的值是一个地址值,是被引用对象的首地址。

转自:https://mp.weixin.qq.com/s/dz0LJ152iXavwDlt306OqA