方法中参数传递的机制
2016-04-24 21:43
363 查看
源代码:
运行结果:
源代码:
1.内存中存在着两种内存,一种是堆内存,还有一种是栈内存;
2.在第一个源代码中,方法中的操作是对方法中的的a,b进行操作(方法中的a,b其实并等同于main中的a,b,他们是分别存在方法栈区和main栈区不同的值)而方法的操作是对于方法栈区的操作,main栈区的数其实并没有被改变;
3.在第二个源代码中定义了一个数据类,在main()中定义了一引用变量dw,所以dw的实际操作是储存在堆内存中的DataWrap对象。此时,不管是main中的dw还是方法中的dw,他们此时都是DataWrap的引用变量;(这个就是C++中的指针操作可以通过函数来改变变量的值)
public class PrimitiveTransferTest{ public static 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){ int a=6; int b=9; swap(a,b); System.out.println("交换结束后,变量a的值是"+a+"变量b的值是"+b); } }
运行结果:
源代码:
class DataWrap{ int a; int b; } public class PrimitiveTransferTest{ public static void swap(DataWrap dw){ int tmp=dw.a; dw.a=dw.b; dw.b=tmp; System.out.println("swap方法里,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("交换结束后,变量a的值是"+dw.a+"变量b的值是"+dw.b); } }运行结果:
1.内存中存在着两种内存,一种是堆内存,还有一种是栈内存;
2.在第一个源代码中,方法中的操作是对方法中的的a,b进行操作(方法中的a,b其实并等同于main中的a,b,他们是分别存在方法栈区和main栈区不同的值)而方法的操作是对于方法栈区的操作,main栈区的数其实并没有被改变;
3.在第二个源代码中定义了一个数据类,在main()中定义了一引用变量dw,所以dw的实际操作是储存在堆内存中的DataWrap对象。此时,不管是main中的dw还是方法中的dw,他们此时都是DataWrap的引用变量;(这个就是C++中的指针操作可以通过函数来改变变量的值)
相关文章推荐
- acm_Toxophily
- bzoj4152 [AMPPZ2014]The Captain
- Ubuntu 16.04系统下配置cocos2dx-3.10
- SystemVerilog的历史
- 机房重构组合查询之模板模式
- Android的常用布局
- 关于java中String、StringBuffer、StringBuilder
- 小菜鸟的PHP入门笔记(二:变量)
- Android-SeekBar可滑动进度条
- Oracle 交换分区
- java.util包---Hashtable
- Oracle SQL日期比较和常用日期函数
- javaScript文件位置调整
- poj 3230(初始化。。动态规划)
- Linux期中总结
- struts2和servlet同时用(访问servlet时被struts2过滤器拦截问题的解决)
- Rescue
- 易语言学习第十七课
- 51单片机之烟雾报警器(MQ-2)
- 软考之路(一)——网络知识