参考:值传递的内存解析.xlsx
1.调用方法传递基本数据类型
package com.atguigu.java2;
public class ValueTransferTest {
public static void main(String[] args) {
ValueTransferTest vt= new ValueTransferTest();
//需求:交换两个变量的值
int m =5,n = 10;
vt.swapData(m, n);
System.out.println("m=" + m + "n" + n);
}
public void swapData(int m,int n){
System.out.println("sd交换之前m=" + m + "n" + n);
int temp = m;
m = n;
n =temp;
System.out.println("sd交换之后m=" + m + "n" + n);
}
}
运行结果:
2.调用方法传递引用本数据类型,传递的是地址值
package com.atguigu.java2;
class Number{
int m;
int n;
}
public class ValueTransferTest2 {
public static void main(String[] args) {
//创建对象
ValueTransferTest2 vt = new ValueTransferTest2();
Number number = new Number();
number.m =5;
number.n =10;
//调用方法交换数据
vt.swapData(number);
System.out.println("number.m = "+number.m+" number.n="+number.n);
}
public void swapData(Number number){
int temp = number.m;
number.m = number.n;
number.n =temp;
}
}
package com.atguigu.java2;
class Person{
String name;
}
public class ValueTransferTest3 {
public static void main(String[] args) {
int m=5;
int n=10;
n=10;
System.out.println("m=" + m + "n" + n);
System.out.println("---------------------------");
Person person = new Person();
person.name="小龙哥";
Person person2=person;//传递的是地址值
person2.name="小泽姐";
System.out.println(person.name);
System.out.println(person2.name);
}
}
运行结果:



