java的参数传递

java传递参数采用传值方式

传值方式具体为:将参数的值复制一份,方法里面用复件,方法外用原件,方法中可以改变复件,不影响原件

根据参数类型分为两种不同情况:基本数据类型和对象数据类型

 1 package com.jdk7.chapter2;
 2 
 3 /**
 4  * java参数传递采用的传值方式
 5  * 传值:将参数的值复制一份,方法里面用复件,方法外用原件,方法中可以改变复件,不影响原件
 6  * @author celineluo
 7  *
 8  */
 9 public class PassParamter {
10     public PassParamter(){}
11     
12     /**
13      * 对象类型的传值策略是:参数的引用复制一份传给方法,复件引用和原件引用指向同一个对象,方法可以改变参数引用的复件,
14      * 但是不会影响原件引用,即复件引用还可以指向一个新的对象
15      */
16     
17     /**
18      * 调用ComplexNumber类自定义构造函数声明对象实例
19      * @param comn
20      */
21     public void methodA(ComplexNumber comn){
22         comn = new ComplexNumber(1,2);        //这个复件引用指向了一个新的对象
23         System.out.println(comn.toString());
24     }
25     
26     /**
27      * 调用ComplexNumber类中实例变量Setter方法设置数值
28      * @param comn
29      */
30     public void methodB(ComplexNumber comn){
31         comn.setRealPart(1);                //这个复件引用和原件引用指向同一个对象,即改变复件引用的值,原件引用的值同步改变
32         System.out.println(comn.toString());
33         comn.setRealPart(2);
34         System.out.println(comn.toString());
35     }
36     
37     /**
38      * 基本数据类型传值的策略是:将参数值复制一份传给方法,方法可以改变复件,但不影响原件
39      * @param n
40      */
41     public void methodC(int n){
42         n++;
43         System.out.println("n = "+n);
44     }
45     
46     public static void main(String[] args) {
47         PassParamter test = new PassParamter();
48         ComplexNumber a = new ComplexNumber(5,6);
49         System.out.println("调用methodA参数传递之前: "+a.toString());
50         test.methodA(a);
51         System.out.println("调用methodA参数传递之后: "+a.toString());
52         System.out.println("调用methodB参数传递之前: "+a.toString());
53         test.methodB(a);
54         System.out.println("调用methodB参数传递之后: "+a.toString());
55         int b = 0;
56         System.out.println("调用methodC参数传递之前: "+b);
57         test.methodC(b);
58         System.out.println("调用methodC参数传递之后: "+b);
59         
60     }
61 
62 }
执行结果:

调用methodA参数传递之前: realPart=5.0, imagePart=6.0i
realPart=1.0, imagePart=2.0i
调用methodA参数传递之后: realPart=5.0, imagePart=6.0i
调用methodB参数传递之前: realPart=5.0, imagePart=6.0i
realPart=1.0, imagePart=6.0i
realPart=2.0, imagePart=6.0i
调用methodB参数传递之后: realPart=2.0, imagePart=6.0i
调用methodC参数传递之前: 0
n = 1
调用methodC参数传递之后: 0

 

posted @ 2018-01-08 17:45  celineluo  阅读(216)  评论(0编辑  收藏  举报