zoukankan      html  css  js  c++  java
  • java关于方法参数传递的相关问题讨论

    我们知道,java中定义变量的目的有两个:

    1.防止被垃圾回收机制回收,毕竟如果没有明确指向真实物理内存的'代号'很大可能会被java垃圾回收机制当作垃圾回收。

    2.便于引用,方便处理。

     1 package testp1;
     2 
     3 public class Test01 {
     4     public static void replace1(int a){
     5         a = 10;
     6     }
     7     public static int replace2(int a){
     8         a = 10;
     9         return a;
    10     }
    11     public static void replace3(String s){
    12         s = "a";
    13     }
    14     public static String replace4(String s){
    15         s = "a";
    16         return s;
    17     }
    18     
    19 public static void main(String[] args) {
    20     int a = 0;
    21     replace1(a);
    22     System.out.println("in replace1:a="+a);
    23     a = replace2(a);
    24     System.out.println("in replace2:a="+a);
    25     String s = "make";
    26     replace3(s);
    27     System.out.println("in replace3:s="+s);
    28     s=replace4(s);
    29     System.out.println("in replace4:s="+s);
    30 }
    31 }

    局部变量和外部变量

    在上述代码的replace1中,形参a为基本数据类型,它指向的是数字10所在的物理内存,调用该方法后并没有改变外部变量a所指向的物理地址。就会出现输出没改变变量值的结果,但是如果调用了int返回类型的方法replace2后我们发现它的值改变了,是因为我们把内部变量指向的物理地址赋值给了外部变量a,在返回值为void的引用数据类型的方法replace3中,方法的结果就是该形式参数所引用的对象a,同样只在该方法内部起作用,出了该方法,变量还是原来的引用对象,在返回类型为String的类型中,我们又让外部变量指向对象a所在的物理内存,其值当然会变化。

  • 相关阅读:
    iOS
    2016-北京游线路规划
    OC 组合实现多继承
    如何把项目托管到GitHub
    iOS6和iOS7代码的适配(2)——status bar
    iOS6和iOS7代码的适配(1)
    Xcode ARC需要什么版本的环境支持
    内容页直接输出图集函数及使用方法
    vue-cli如何引入bootstrap工具
    实现Sublime Text3中vue文件高亮显示的最有效的方法
  • 原文地址:https://www.cnblogs.com/g177w/p/8372045.html
Copyright © 2011-2022 走看看