• 方法参数传递时的值传递和引用传递


    1. 再论数据类型

    基本数据类型:char,byte,short,int,long,float,double,boolean

    应用数据类型: 数组,类,String

    基本数据类型的变量可以直接赋值: int age = 39;double price = 34.5;

    引用数据类型的变量不可以直接赋值:

    所有的引用数据类型在使用的时候必须 1:声明 2:分配空间  3:赋值

    1声明

    Int[] nums ;

    Student stu

    2分配空间 使用new 分配空间

    Nums = new int[3];

    Stu = new Student();

    3赋值

    Nums[0] = 22;

    Nums[1] = 23;

    Stu.name= “赵丽丽”;

    Stu.age = 23;

     

    2.基本数据类型作为方法的参数

               方法的定义

                    

    1. //基本数据类型作为方法的参数
    2. public void changeNum(int num){
    3. System.out.println("修改修改前方法中的num:"+num);
    4. num = 20;
    5. System.out.println("修改后方法中的num:"+num);
    6. }

                 方法的调用

                    

    1. public static void main(String[] args) {
    2. //创建第一个老师() 姓名是:玛丽丽
    3. Teacher t1 = new Teacher();
    4. t1.name="玛丽丽";
    5. t1.age= 22;
    6. //使用t1对象调用方法
    7. System.out.println("=====================");
    8. int shuzi = 10;
    9. t1.changeNum(shuzi);
    10. System.out.println("调用完毕后的结果:"+ shuzi );

            运行的结果

                    

     

            分析原因

     

    结论:在基本数据类型作为方法参数的时候,形参的任何改变不会影响实参的结果

    3.引用数据类型作为方法的参数

    方法的定义

    1. //应用数据类型作为参数
    2. public void chageNum(int[] nums){
    3. System.out.println("修改修改前方法中的nums:"+nums[0]);
    4. nums[0] = 20;
    5. System.out.println("修改后方法中的nums:"+nums[0]);
    6. }

    方法的调用  

    1. public static void main(String[] args) {
    2. //创建第一个老师() 姓名是:玛丽丽
    3. Teacher t1 = new Teacher();
    4. t1.name="玛丽丽";
    5. t1.age= 22;
    6. //使用t1对象调用方法(应用数据类型的参数)
    7. System.out.println("=====================");
    8. int[] temp_nums = {1,2,3};
    9. t1.chageNum(temp_nums);
    10. System.out.println("调用完毕后的结果:"+ temp_nums[0] );

            输出结果

            

     

            分析

     

    结论:在引用数据类型作为方法参数的时候,形参的任何改变会影响实参的结果(注意如果在方法中对于形参重新分配了空间如 nums  = new int[3];person=new Person())则形参的变化不会影响到实参的值)

  • 相关阅读:
    情绪的变化需要控制
    JavaScript 保留关键字
    一文带你迅速掌握python装饰器
    【你不知道的javascript上】2. 第三章 全局作用域,函数作用域和块作用域,立即执行函数
    【Android实战】Bitmap图片的截屏、模糊处理、传递、使用
    Gartner发布《2022年中国ICT技术成熟度曲线》,明道云入选样本厂商
    Spring之BeanFactory与ApplicationContext区别、实例化Bean的三种⽅式、延迟加载(lazy-Init )
    使用 NestJs 进行错误处理
    matplotlib入门
    Tomcat无法映射到activiti-app导致activiti无法启动页面
  • 原文地址:https://blog.csdn.net/weixin_44793200/article/details/126221031