Java学习记录-Java中方法的参数传递

Java中方法的参数传递是值传递(指变量在栈内存中的值)

基本数据类型是保存在栈内存中,引用对象在栈内存中保存的是引用对象在堆内存中的地址

即:

  1. 如果方法的形参是基本类型,那么实参在向形参传递参数时,就是直接传递值,把实参的值复制,再传递给形参
     1 public class test1 {
     2     public static void main(String[] args) {
     3         int a = 0;
     4         System.out.println(swap(a));
     5         System.out.println("a的值为" + a);
     6     }
     7 
     8     public static int swap(int i){
     9         i = 666;
    10         return i;
    11     }
    12 }

    swap(a)的值为666,但最终a的值仍为0,因为swap方法中的形参为基本类型,在实参a向swap传递形参的时候,把a的副本传递给swap作为形参,swap里面并没有对a本身进行操作

  2. 如果方法的形参是对象,那么实参向形参传递参数时,传递的值是实参在栈内存中的值,也就是引用对象在堆内存中的地址
     1 public class test1 {
     2     public static void main(String[] args) {
     3         DataSwap ds1 = new DataSwap();
     4         System.out.println(ds1.i);
     5         swap(ds1);
     6         System.out.println("ds1.i最终的值" + ds1.i);
     7     }
     8 
     9     public static int swap(DataSwap ds){
    10         ds.i = 666;
    11         return ds.i;
    12     }
    13 }
    14 
    15 class DataSwap{
    16     public int i;
    17 }

    执行swap方法前ds1.i的值为0,执行swap方法后最终ds1.i的值为666,这里swap方法中的形参是一个对象,实参传递形参时,他们俩的值都指向了DataSwap在堆内存中的地址,所以swap中ds.i修改后,ds1.i也一样发生了变化

posted @ 2020-05-29 16:29  Victor老韬  阅读(130)  评论(0)    收藏  举报