• 2020年8月2日 方法的传递机制(参数是基本数据类型、参数是引用数据类型)


    /*
    方法的参数传递机制:
        实参-->形参
    
    (1)形参是基本数据类型
        实参赋值给形参的是数据值,形参值的修改不影响实参,因为实参是“copy,复制”了一份数据值给形参
    
    */
    class Test02_PassParamValue{
        public static void main(String[] args){
            int x = 1;
            int y = 2;
            //本类同级别的方法调用
            swap(x,y);
            
            System.out.println("x = " + x + ",y = " + y);//形参是基本数据类型
        }
        //public static修饰符
        public static void swap(int a,int b){
            System.out.println("a = " + a + ",b = " + b);
            int temp = a;
            a = b;
            b = temp;
            System.out.println("a = " + a + ",b = " + b);
        }
    }

    //输出结果:
    a=1 b=2
    a=2 b=1
    x=1 y=2


    /*
    方法的参数传递机制:
        实参-->形参
    
    
    (2)形参是引用数据类型    
        实参赋值给形参的是对象的地址值,如果形参修改了对象的属性值,那么实参对象的属性值也会修改。
    */
    class Test02_PassParamValue_2{
        public static void main(String[] args){
            Circle yuan = new Circle();
            yuan.radius = 1.0;
            
            doubleRadius(yuan);
            
            System.out.println("半径:" + yuan.radius);
        }
        //方法的功能:可以把c这个圆对象的半径,变为原来的2倍
        public static void doubleRadius(Circle c){//形参是引用数据类型
            c.radius *= 2;
        }
        
    }
    class Circle{
        double radius;
    }
    //输出结果:
    半径:2.0
    /*
    陷阱:
        当形参是引用数据类型,实参给形参地址值之后,
        形参修改了地址值,那么和实参就无关了
    */
    class Test02_PassParamValue_Error{
        public static void main(String[] args){
            Circle yuan = new Circle();//声明变量
            yuan.radius = 1.0;//给变量属性赋值
            
            doubleRadius(yuan);//调用方法
            
            System.out.println("半径:" + yuan.radius);//打印变量的属性值
        }
        //方法的功能:可以把c这个圆对象的半径,变为原来的2倍
        public static void doubleRadius(Circle c){
            c = new Circle();//加了一句代码  修改了形参c中存储的地址值,即c指向新对象了
            c.radius *= 2;
        }
        
    }
    class Circle{
        double radius;
    }

     

  • 相关阅读:
    一行代码解决各种IE兼容问
    Magento多语言设置——优化前台与后台实现方法
    建立多语言Magento网站
    让Dreamweaver支持phtml(支持更多的文件类型)
    netbox version 2.8build 4128 cannot initializes the scripting engine ...
    magento如何安装中文语言包
    如何查看 phtml文件 并有代码颜色提示
    国外博客网站推荐(75个)
    magento侧边栏如何增加模块
    如何查看 phtml文件 并有代码颜色提示
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/13420048.html
Copyright © 2020-2023  润新知