zoukankan      html  css  js  c++  java
  • 第三周 7.17LJY关于方法参数的一些理解

        在java中采用的是按值调用.也就是得到的是变量的一个拷贝

    class Text22 {
        static int i = 1;
        public static void main(String[] args) {
            
            System.out.println(triple(i));
            System.out.println(i);
            
        }
    
        public static int triple(int x) {
             int result = x * 3;
             return result;
        }
    }

    其输出结果为3, 1;所以方法参数只是引用的变量的拷贝无法对变量值进行修改.但是却可以修改对象里的参数,这是因为对象本身即是一个拷贝方法参数与对象本就是指向的同一个拷贝的地址,所以其修改值,就好比创建的对象,类就好比一个模板,创建对象就是用模板做的一个拷贝,大家都是对对象进行操作,无论怎么折腾拷贝,也不会对模板造成影响.这是我的一个比较粗浅的理解.

    class Text22 {
        
        public static void main(String[] args) {
            Person p1 = new Person("强森");
            Person p2 = new Person("伪娘");
            change(p1,p2);
            System.out.println(p1.name + p2.name);
            
            
        }
    
        public static void change(Person x,Person y) {
             Person temp = new Person("xxx");
             temp = x;
              x = y;
              y = temp;
              System.out.println(x.name + y.name);
        }
    }
    
    class Person {
        String name;
        public Person(String name) {
            this.name = name;
        
        }
    }

    运行结果为;伪娘强森

          强森伪娘,证明方法内对象x,y成功互换了,但是p1,p2并没有互换,证明传过去的只是其拷贝,只是传值,,其只在方法内俩个拷贝进行了互换.方法并不能使一个对象参数引用其他对象参数,

    总结一下,1.一个方法无法修改一个基本类型的数据.

        2.一个方法可以改变一个对象参数的使用情况.

        3.一个方法不能让对象参数引用一个新的对象.(到方法参数上的时候,方法里操作的是这俩个对象的拷贝)

  • 相关阅读:
    iframe显示高度自适应 兼容多浏览器
    Asp.Net在Global.asax中实现URL 的重写
    文件流下载 ASP.NET
    Asp.Net实现全局定时器功能
    C#中获取本机IP地址,子网掩码,网关地址
    Asp.Net缓存实例
    Google API 天气数据缓存到一个XML中
    获取服务器信息
    C# NET 中英混合字符串截断实例
    Asp.Net实现长文章分页显示功能
  • 原文地址:https://www.cnblogs.com/lijuenyi/p/9324799.html
Copyright © 2011-2022 走看看