zoukankan      html  css  js  c++  java
  • JAVA入门学习: 方法参数的传递(函数传参问题)

    引言:我们知道C++中拥有两种参数传递方式, 值调用和引用调用。 有些程序员认为JAVA程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。

    由于这种误解存在普遍性,所以下面将阐述一下这个问题。

    所以用一段简单的代码来阐述一下这个问题:

     1     //如果方法参数是的输入时引用,那么我们将交换两个指针(即引用)
     2     public static void swap(Employee x, Employee y)
     3     {
     4         Employee temp = x;
     5         x =y;
     6         y = temp;
     7     }
     8     
     9     
    10     Employee a = new Employee("alice", 5000);
    11     Employee b = new Employee("trcy", 5000);
    12     
    13 
    14     swap(a, b);    //事实上JAVA中只存在一种传递方式 值传递,  只不过拷贝的是引用, 拷贝版的引用一样还是指向原来的对象。 

    总结:交换后我们期望的结果应该是, a引用trcy, b引用Alice,  但是结果却不是

    1 alice
    2 trcy

    打印结果, a依然引用alice, b依然引用trcy。   说明swap紧紧交换的是两个副本。

    随着swap方法调用的结束, 两个副本的内存将被释放, swap所做的是无用工作;

    from JAVA核心技术:

    1.一个方法不能修改一个基本数据的参数类型的参数(内置类型,布尔值)

    2.一个方法可以修改一个对象参数的状态。

    3.一个方法不能修改一个对象参数去引用一个新的对象。

  • 相关阅读:
    nowcoderD Xieldy And His Password
    Codeforces681D Gifts by the List
    nowcoder80D applese的生日
    Codeforces961E Tufurama
    Codeforces957 Mahmoud and Ehab and yet another xor task
    nowcoder82E 无向图中的最短距离
    nowcoder82B 区间的连续段
    Codeforces903E Swapping Characters
    Codeforces614C Peter and Snow Blower
    Codeforces614D Skills
  • 原文地址:https://www.cnblogs.com/DLzhang/p/4156842.html
Copyright © 2011-2022 走看看