基本数据类型的传值
- 案例:对两个变量的值进行交换并打印输出。
package com.study.method;
public class ExchangeDemo {
//交换方法
public void swap(int a,int b){
int temp;
System.out.println("交换前a="+a+",b="+b);
temp=a;a=b;b=temp;
System.out.println("交换后a="+a+",b="+b);
}
public void swapTest(){
int m=4,n=5;
System.out.println("交换前m="+m+",n="+n);
swap(m, n);
System.out.println("交换后m="+m+",n="+n);
}
public static void main(String[] args) {
ExchangeDemo ed=new ExchangeDemo();
ed.swapTest();
}
}
运行结果:
交换前m=4,n=5
交换前a=4,b=5
交换后a=5,b=4
交换后m=4,n=5
注:
(1) 这里m和n值没有发生变化的原因是,在执行swapTest方法时,只将m和n中的值,即4和5传给了a和b,而并没有将m和n两个变量传过去,因此,m和n的值没有发生变化;
(2) 如果两个方法都在同一类里进行定义,那么方法中可以直接调用另一个方法,而无需像主方法那样需要先创建对象。
2. 案例:在方法中对一个变量的值进行更改,观察主方法中是否也对其进行了更改
package com.study.method;
public class ExchangeDemo1 {
public void add(int n){
n++;
System.out.println("方法中n="+n);
}
public static void main(String[] args) {
int n=10;
System.out.println("方法调用前n的值:"+n);
ExchangeDemo1 ed1=new ExchangeDemo1();
ed1.add(n);
System.out.println("方法调用后n的值:"+n);
}
}
运行结果:
方法调用前n的值:10
方法中n=11
方法调用后n的值:10
注:这里依然是由于主方法内已经定义n=10,可以理解为创建了一块内存为n,值为10,当调用方法时,将n的值(并非n)借给了方法去执行,因此,n的值始终为10。