java 值传递跟引用传递在内存中怎么分配的
来源:互联网 发布:高清网络机顶盒价格 编辑:程序博客网 时间:2024/05/22 14:47
在以后的工作中,如果没有很好的掌握这两种传递方式,那么就会带了一些意想不到的问题.
如果要很好的掌握他们的,必须要对其内部的结构,也就是内存存储位置有一个比较清晰的印象
那么以后再写程序,不管遇到什么的程序,表现虽然不一样,但是内部结构(内存)的位置基本上
不会有太多的变化.好了.废话不说了:
第一种:值传递方式: 举个简单的程序
public class InitDataTest {public static void main(String[] args) {// TODO Auto-generated method stubint a=5; int b;b=a;b=6;trace(a,b);}static void trace(int a,int b){System.out.println("a的值为:"+a+"\nb的值为"+b);}}
trace(a,b);
}
static void trace(int a,int b){
System.out.println("a的值为:"+a+"\nb的值为"+b);
}
}
[结果如下]
a的值为:5
b的值为6
内存结构图如下:
上面的图对应的程序的执行顺序以及内存是怎么发生变化的.相信大家都能看的懂不.
第二种:引用传递 例子如下:
public class Number {
public static void main(String[] args) {
Test n1=new Test();
Test n2=new Test();
n1.i=9;
n2.i=47;
System.out.println("n1.1="+n1.i+"\n"+"n2.i="+n2.i);
n1=n2;
System.out.println("n1.1="+n1.i+"\n"+"n2.i="+n2.i);
n1.i=27;
System.out.println("n1.1="+n1.i+"\n"+"n2.i="+n2.i);
}
}
class Test{
int i;
}
内存变化图如下:
到此时堆中的没有引用的那块区域 等待垃圾回收器处理 此时他们2个指向了同一块内存空间.
输出结果大家应该能想到的:
n1.1=9n2.i=47
n1.1=47n2.i=47
n1.1=27n2.i=27
0 0
- java 值传递跟引用传递在内存中怎么分配的
- java 值传递跟引用传递在内存中怎么分配的
- 小example说明java的值传递和引用传递,基础变量和对象在内存里的区别,堆栈
- 值传递跟引用传递
- 验证vector变量是在内存中怎么分配的
- Java 基础【04】数组内存分配 引用传递 值传递
- java中变量在内存中的分配
- java中变量在内存中的分配
- JAVA中参数传递(按值传递和引用传递)
- Java中参数传递是值传递,还是引用传递
- java的值传递还是引用传递
- Java的值传递与引用传递
- Java的值传递和引用传递
- java的值传递与引用传递
- java的引用传递和值传递
- java的引用传递和值传递
- java的值传递与引用传递
- java的值传递,没有引用传递
- 探寻PhoneGap的真面目
- Jquery实现角色左右选择特效
- hibernate中的几种关系映射
- Quickly creating, deploying and testing a WebService interface for ADF Business Components
- 超级强大的心理定律~~!你可以变成你想要的样子!~
- java 值传递跟引用传递在内存中怎么分配的
- Android Instrumentation 测试
- 三星GalaxyTab3 7.0(WIFI) SM-T210 刷机 ROM 教程 附带港版官方ROM
- Python中的*args和**kwargs
- Code Hunt 第一章算术篇答案
- 程序员思维
- Linux下otl调用MySQL数据库9.1版
- cocos2d-x on wp8架构简介
- Java nio 之 管道pipe