|NO.Z.00017|——————————|BigDataEnd|——|Java&类和对象.V17|——|Java.v17|参数传递注意事项|

一、参数传递注意事项
### --- 参数传递注意事项

~~~     ——>        基本数据类型的变量作为方法的参数传递时,
~~~     ——>        形参变量数值的改变通常不会影响到实参变量的数值,因为两个变量有各自独立的内存空间;
~~~     ——>        引用数据类型的变量作为方法的参数传递时,
~~~     ——>        形参变量指向内容的改变会影响到实参变量指向内容的数值,因为两个变量指向同一块内存空间
~~~     ——>        当引用数据类型的变量作为方法的参数传递时,
~~~     ——>        若形参变量改变指向后再改变指定的内容,则通常不会影响到实参变量指向内容的改变,
~~~     ——>        因为两个变量指向不同的内存空间。
### --- 内存结构之栈区

~~~     ——>        栈用于存放程序运行过程当中所有的局部变量。
~~~     ——>        一个运行的Java程序从开始到结束会有多次方法的调用。
~~~     ——>        JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。
~~~     ——>        一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。
~~~     ——>        当某一个方法调用完成后,其对应的栈帧将被清除。
### --- 传参的相关概念

~~~     ——>        参数分为形参和实参,定义方法时的参数叫形参,调用方法时传递的参数叫实参。
~~~     ——>        调用方法时采用值传递把实参传递给形参,方法内部其实是在使用形参。
~~~     ——>        所谓值传递就是当参数是基本类型时,传递参数的值,比如传递i=10,真实传参时,
~~~     ——>        把10赋值给了形参。当参数是对象时,传递的是对象的值,也就是把对象的地址赋值给形参。
二、逻辑结构
三、编程代码
### --- 编程代码

/*
    编程实现参数传递的测试 
 */
public class ArgumentTest {
    
    // 自定义成员方法打印参数传入的整数数据
    // int ia = ib = 10;
    void show1(int ia) {
        ia = 200;
        System.out.println("show方法中:ia = " + ia); // 10  200
    }
    // 自定义成员方法打印参数传入的数组内容
    void show2(int[] arr1) {
        arr1 = new int[2];  // 加上改行代码后,相当于在堆区中又重新申请一块内存空间
        arr1[0] = 200;
        System.out.println("show方法中:arr1[0] = " + arr1[0]); // 10  200  200
    }
    
    public static void main(String[] args) {
        
        // 1.声明ArgumentTest类型的引用指向该类型的对象
        ArgumentTest at = new ArgumentTest();
        // 2.使用引用变量调用show1方法进行测试
        int ib = 10;
        at.show1(ib);
        System.out.println("main方法中:ib = " + ib); // ib = 10 
        
        System.out.println("-------------------------------------------------");
        // 3.调用show2方法进行测试
        int[] arr2 = new int[]{10, 20};
        at.show2(arr2);
        System.out.println("main方法中:arr2[0] = " + arr2[0]); // 10 200 10
    }
}
四、编译打印
### --- 编译

C:\Users\Administrator\Desktop\project>javac ArgumentTest.java
### --- 打印输出

C:\Users\Administrator\Desktop\project>java ArgumentTest
show方法中:ia = 200
main方法中:ib = 10
-------------------------------------------------
show方法中:arr1[0] = 200
main方法中:arr2[0] = 10

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(20)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示