java 面向对象之三:
- Ⅰ、方法的参数传递:参数为基本数据类型
- 1、基本数据类型的值传递:
- 其一、代码为:
- 其二、内存解析为:
- 其三、截图为:
- Ⅱ、方法的参数传递:参数为引用数据类型
- 1、引用数据类型的值传递:案例1
- 其一、代码为:
- 其二、内存解析为:
- 其三、截图为:
- 2、引用数据类型的值传递:案例2
- 其一、代码为:
- 其二、内存解析为:
- 其三、截图为:
- Ⅲ、小结:
Ⅰ、方法的参数传递:参数为基本数据类型
1、基本数据类型的值传递:
其一、代码为:
package com.atguigu.java;
public class TransferTest1 {
public void swap(int a, int b) {
int tmp = a;
a = b;
b = tmp;
System.out.println("swap方法里,a的值是" + a + ";b的值是" + b);
}
public static void main(String[] args) {
TransferTest1 test = new TransferTest1();
int a = 5;
int b = 10;
test.swap(a, b);
System.out.println("交换结束后,变量a的值是" + a + ";变量b的值是" + b);
}
}
其二、内存解析为:
其三、截图为:
// 最终输出的结果:a 依旧是 5,而 b 依旧是 10;
// 原因:从内存解析可知,swap() 方法中的数据交互,并不影响在 main() 方法中 a,b 的值;
Ⅱ、方法的参数传递:参数为引用数据类型
1、引用数据类型的值传递:案例1
其一、代码为:
package com.atguigu.java;
public class TransferTest2 {
public static void swap(DataSwap ds) {
int temp = ds.a;
ds.a = ds.b;
ds.b = temp;
System.out.println("swap方法里,a Field的值是" + ds.a + ";b Field的值是" + ds.b);
}
public static void main(String[] args) {
DataSwap ds = new DataSwap();
ds.a = 5;
ds.b = 10;
swap(ds);
System.out.println("交换结束后,a Field的值是" + ds.a + ";b Field的值是" + ds.b);
}
}
class DataSwap {
public int a;
public int b;
}
其二、内存解析为:
其三、截图为:
2、引用数据类型的值传递:案例2
其一、代码为:
package com.atguigu.java;
public class TransferTest3 {
public static void main(String args[]) {
TransferTest3 test = new TransferTest3();
test.first();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i) {
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
class Value {
int i = 15;
}
其二、内存解析为:
其三、截图为:
Ⅲ、小结:
其一、哪里有不对或不合适的地方,还请大佬们多多指点和交流!
其二、若有转发或引用本文章内容,请注明本博客地址(直接点击下面 url 跳转
) https://blog.csdn.net/weixin_43405300,创作不易,且行且珍惜!