• java中方法的参数传递机制(值传递还是引用传递)


    1、java方法传入的参数,属于参数传递还是值传递?

    答:属于值传递。

    直接上代码示例:

    public class Human {
        public String name="lowi";
        public int age=22;
        int num=0;
    //    public static void main(String[] args) {
    //        System.out.println("num=="+num);
    //    }
    }

    测试对象以及数据的引用:

    public class People {
        public String getName(Human h){
            System.out.println("变更之前测试》》》》》name="+h.name+" ,age=="+h.age+" ,num="+h.num);
            //值传递,这里的h的地址与主方法中ha指向同一个地址
            h.name="lowi2";
            h.age=33;
            System.out.println("变更之后测试》》》》》name="+h.name+" ,age=="+h.age+" ,num="+h.num);
            //引用传递,不改变主方法中的ha地址,也不影响ha的值
            //这里的h是与前面代码的h属于不同的存储地址
            h=new Human();
            System.out.println("新赋值的human》》》》》name="+h.name+" ,age=="+h.age+" ,num="+h.num);
            return h.name;
        }
        public static void main(String[] args) {
            People peo=new People();
            Human ha=new Human();
            System.out.println("测试1111》》》》》name="+ha.name+"  ,age=="+ha.age+"  ,num="+ha.num);
            ha.name="lowi3";
            System.out.println("测试2222》》》》》name="+ha.name+"  ,age=="+ha.age+"  ,num="+ha.num);
            String name2=peo.getName(ha);
            System.out.println("新赋值后《《《《name="+name2);
            System.out.println("测试3333》》》》》name="+ha.name+"  ,age=="+ha.age+"  ,num="+ha.num);
            /***************************************
            ===========运行结果:
            测试1111》》》》》name=lowi  ,age==22  ,num=0
            测试2222》》》》》name=lowi3  ,age==22  ,num=0
            变更之前测试》》》》》name=lowi3 ,age==22 ,num=0
            变更之后测试》》》》》name=lowi2 ,age==33 ,num=0
            新赋值的human》》》》》name=lowi ,age==22 ,num=0
            新赋值后《《《《name=lowi
            测试3333》》》》》name=lowi2  ,age==33  ,num=0
            ---------------------------------------------
            说明:主方法main()中的变量ha和getName(ha)中的变量ha指向同一个地址,在getName(ha)方法中并没有改变ha的地址而是改变了属性的值
            所以结果是main方法中的ha的值发生了变化,但是这不是引用传递。除非在getName方法中new一个新的对象,把这个新的地址赋给ha,则为引用传递,其结果中ha的值不会发生变化。
             ****************************************/
        }
    }

    代码说明与运行结果,见上面。

     

     

  • 相关阅读:
    协议与接口相关
    jmeter 使用(1)
    jmeter 压力测试
    shell脚本的规则
    charles的原理及使用
    Linux环境部署和项目构建
    面向对象
    python 基础练习题
    jmeter 使用(2)
    Ext.apply
  • 原文地址:https://www.cnblogs.com/lojun/p/8681906.html
Copyright © 2020-2023  润新知