Java的办法的参数传递,值传递和引用传递还有String字符串传递

    添加时间:2013-7-25 点击量:

    办法的参数传递


    1、值传递 


    a) 办法调用时,实际参数把它的值传递给对应的情势参数,办法履行中情势参数值的改变不影响实际参数的值。传到办法里的参数类型是根蒂根基数据类型的都叫值传递


    2、引用传递


    a) 也称为传地址。办法调用时,实际参数的地址而不是参数的值被传递给办法中相对应的情势参数,在办法履行中,对情势参数的操纵实际上就是对实际参数的操纵,办法履行中情势参数值的改变将会影响实际参数的值。传到办法里的参数类型是引用数据类型的都叫引用传递


     


    值传递例子:



     1 public class test {
    
    2
    3 /
    4 @param args
    5 /
    6 public static void main(String[] args) {
    7 // TODO Auto-generated method stub
    8 int a=5;
    9 //未调用办法前输出
    10 System.out.println(第一次输出:+a);
    11 swap(a);
    12 //调用完办法后输出
    13 System.out.println(第三次输出:+a);
    14 }
    15 public static void swap(int a)
    16 {
    17 a=10;
    18 //改变参数a的值后输出
    19 System.out.println(第二次输出:+a);
    20 }
    21 }


    上方的例子输出成果为: 第一次输出:5
              第二次输出:10
              第三次输出:5


    看,固然在swap办法里改变了a的值,然则在main办法里的变量a的值仍然没有改变这就验证了上方的话,根蒂根基数据类型传递的话在办法里改变形参的值然则改变不了实际参数的值。。。


    在这里我还要申明一个事,那就是String 字符串类型 不属于根蒂根基数据类型,但它也不是引用数据类型,它是特别引用数据类型。例子如下:



     1 public class test {
    
    2
    3 /
    4 @param args
    5 /
    6 public static void main(String[] args) {
    7 // TODO Auto-generated method stub
    8 String a=您好!;
    9 //未调用办法前输出
    10 System.out.println(第一次输出:+a);
    11 swap(a);
    12 //调用完办法后输出
    13 System.out.println(第三次输出:+a);
    14 }
    15 public static void swap(String b)
    16 {
    17 b=Hello,Word;
    18 //改变参数a的值后输出
    19 System.out.println(第二次输出:+b);
    20 }
    21 }


    成果为:第一次输出:您好!
        第二次输出:Hello,Word
        第三次输出:您好!


    为什么改变不了?因为传字符串的话实际上就是值传递,所以改变不了..........


    引用传递例子:



     1 public class test {
    
    2
    3 /
    4 @param args
    5 /
    6 public static void main(String[] args) {
    7 // TODO Auto-generated method stub
    8 int[] a={1,2,3};
    9 System.out.print(未调用办法前输出的成果:);
    10 forint i = 0; i < a.length; i++) {
    11 System.out.print(a[i]+ );
    12 }
    13 System.out.print(\n);
    14 swap(a);
    15 System.out.print(调用完办法后输出的成果:);
    16 forint i = 0; i < a.length; i++) {
    17 System.out.print(a[i]+ );
    18 }
    19 }
    20 public static void swap(int[] b)
    21 {
    22 b[0]=2;
    23 System.out.print(改变参数b的值后输出的成果:);
    24 forint i = 0; i < b.length; i++) {
    25 System.out.print(b[i]+ );
    26 }
    27 System.out.print(\n);
    28 }
    29 }


    上方的成果为:  未调用办法前输出的成果:1  2  3 
            改变参数b的值后输出的成果:2  2  3 
            调用完办法后输出的成果:2  2  3 


    看,传递参数是引用类型的时辰改变办法形参的值,实际值同时也会受到影响............若是还不睬解,可以私聊我!!!

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: