Java学习笔记之Java方法值传递
来源:互联网 发布:淘宝网店怎么注册平台 编辑:程序博客网 时间:2024/06/06 12:49
在Java中,方法的参数传递方式是值传递。
我们首先测试基本类型的值传递,基本类型参数的传递方式是复制该基本类型参数,把该基本类型数值的复制品传给方法做参数,该基本类型数值和它的复制品之间没有关联关系,互不影响。
看以下的例子:
public class PrimtiveTransferTest {
public static void wrap(int a,int b){
System.out.println("在wrap方法中交换之前a的值是" + a + ";b的值是" + b);
int temp;
temp = a;
a = b;
b = temp;
System.out.println("在wrap方法中交换之后a的值是" + a + ";b的值是" + b);
}
public static void main(String[] args) {
int a = 6;
int b = 9;
System.out.println("main方法中未调用wrap方法前,main方法中a的值是" + a + ";b的值是" + b);
wrap(a, b);
System.out.println("main方法中调用wrap方法交换过a、b之后,main方法中a的值是" + a + ";b的值是" + b);
}
}
输出结果是:
main方法中未调用wrap方法前,main方法中a的值是6;b的值是9
在wrap方法中交换之前a的值是6;b的值是9
在wrap方法中交换之后a的值是9;b的值是6
main方法中调用wrap方法交换过a、b之后,main方法中a的值是6;b的值是9
由此我们可以看出,在Java方法中如果参数是基本类型值,参数传递并没有影响原本的基本类型的值。
另外,如果是引用类型变量,那么传递的就是引用变量的复制品,实则两个引用变量指向的是同一个对象,如果通过其中任何一个引用变量改变了它所指向的实例对象,那么另外一个也会受到影响。
再看接下来这个例子:
public class ReferenceTransferTest{
public static void swap(DataWrap dw){
System.out.println("wrap方法中a成员变量的值是" + dw.a + ";b成员变量的值是" + dw.b);
int temp = dw.a;
dw.a = dw.b;
dw.b = temp;
System.out.println("wrap方法中交换以后a成员变量的值是" + dw.a + ";b成员变量的值是" + dw.b);
}
public static void main(String[] args) {
DataWrap dw = new DataWrap();
dw.a = 6;
dw.b = 9;
swap(dw);
System.out.println("main方法中交换结束后a成员变量的值是" + dw.a + ";b成员变量的值是" + dw.b);
}
}
输出结果是:
main方法中通过wrap方法交换结束前,main方法中a成员变量的值是6;b成员变量的值是9
wrap方法中a成员变量的值是6;b成员变量的值是9
wrap方法中交换以后a成员变量的值是9;b成员变量的值是6
main方法中通过wrap方法交换结束后,main方法中a成员变量的值是9;b成员变量的值是6
本例中的参数传递方式就是值传递方法,系统复制了dw的副本,传入wrap方法,但是dw只是一个引用变量,所以系统复制了引用变量,而并未复制DataWrap对象,因此dw和它的复制品指向同一个DataWrap对象,因此该对象中成员变量的改变,会对两个引用变量都有影响。
摘抄编辑自《疯狂Java讲义》
- Java学习笔记之Java方法值传递
- Java学习之值传递
- Java学习之值传递
- java学习笔记-java只有值传递
- java深入学习九之java方法传递参数
- Java学习笔记之三(按值传递和按引用传递)
- 学习笔记-java按值传递
- 我的java学习笔记(4)关于方法参数传递
- Java学习笔记2016.2.17 方法参数传递
- JAVA学习笔记(七)- 值传递与引用传递
- 【Java学习笔记】值传递和引用传递
- Java学习笔记(17)-- 值传递与引用传递
- Java学习笔记----参数传递
- Java学习笔记之toString()方法学习。
- java基础之方法传递
- [学习笔记]Java的值传递和引用传递,引用传递转值传递
- java方法值传递
- Java学习之引用传递
- Android开源图表---MPAndroidChart
- Linux Mint(安装三)
- sql server数据库快照
- 安卓笔记android中控件点击事件实现的几种方式
- 傻瓜,我们都一样。
- Java学习笔记之Java方法值传递
- DbgHelp应用程序的开发(二)
- 安卓笔记android使用BaseAdapter实现复杂的ListView的步骤
- ios之UIbutton
- 安卓笔记android 设置Button或者ImageButton等空间的背景透明
- 2015.01.24
- 安卓笔记android fragment在viewpager中的使用和屏幕切换的状态保存等
- Linux bash Tips & Tricks (1)
- 粒子滤波