基本数据类型参数传递与引用数据类型参数传递区别
来源:互联网 发布:java中的23种设计模式 编辑:程序博客网 时间:2024/06/02 23:59
package object;
//基本数据类型参数传递
/*
class Object_parameter{
public static void main(String args[]){
int x=3;
show(x);
// System.out.println(show(x));
System.out.println("x="+x);
}
public static void show(int x){
x = 4;
//System.out.println(x);
}
}
*/
/* 分析一下执行过程:首先从主函数入口,首先main加载,进入栈内存, int x=3 是定义了一个局部变量,
* 局部变量是存储在栈内存里,而且是在main函数里,第九行是 调用show(x)方法,同时把第八行的值传给了show()
* ,然后被赋值为4,执行完以后,释放,所以main函数里只剩下x=3,show因为是在栈内存里,只要是执行完这段
* 代码块会自动释放,所以执行结果是3
*
* */
//引用数据类型参数传递
public class Object_parameter {
int x = 3;
public static void main(String args[]){
Object_premeter d = new Object_premeter();
d.x = 9;
show(d);
System.out.println("x="+d.x);
}
public static void show(Object_premeter d){
d.x = 4;
}
}
/*
* 分析一下第二个程序的执行过程:
* 在主函数先执行,首先是new了个对象,这个对象存在于堆内存中,堆内存里会默认初始化为0,然后有成员变量int x=3,所以把3
* 赋值替代了0, 程序中用d变量来接收,也就是把这个对象 的引用赋给了d, 接着d.x=9,下面把9赋值给了x,
* 此时x为9,show(d);就是把d作为参数传个了show(),也就是赋值给了show(),此时show也拿着new的那个对象的
* 地址引用,执行外d.x=4,此时show栈内存里的x=4,注意,对象里的x也等于4,因为show()拿着对象的引用呢
* 执行完show方法,代码块释放,show栈里的x值消失,但是对象里的x已经为4,所以打印结果为4
*
*
*
* 其实这两个程序有很大的相似,最大的区别就是 上面的show的代码 d.x=4 让show栈内存里的x的值变成了4,
* 但是,上面的例子,show里的 x变成4之后代码块执行完了,自然而然就释放了,但是下面的例子,因为之前把d的
* 引用赋值给了show()之后,虽然show栈内存里的值也变成了4也最后释放了,但是因为show拿着对象的引用,
* 也就是说指向了对象,当show里的x变成4的时候,对象已经也变成4了,而且对象是在堆内存当中,所以说执行结果为4
* 所以只是一个拿着引用,一个拿着引用的区别,切记切记
- 基本数据类型参数传递与引用数据类型参数传递区别
- 基本数据类型与引用数据类型参数传递
- 基本数据类型参数传递与引用型数据类型参数传递
- 基本数据类型参数传递图解引用数据类型参数传递图解
- 引用数据类型参数传递
- 引用数据类型参数传递
- 基本数据类型参数传递
- 基本数据类型参数传递
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- [javase学习笔记]-6.6 基本数据类型参数与引用数据类型参数的传递过程
- 基本数据类型或者引用数据类型作为方法参数传递
- 基本数据类型和引用数据类型参数的传递
- 基本数据类型和引用数据类型参数传递图解
- 基本数据类型和引用数据类型的参数传递
- 基本数据类型和引用数据类型当做参数传递
- 引用数据类型的参数传递
- Java传参-基本数据类型和引用数据类型作为参数的区别(值传递)
- modelsim openrisc 开始片
- 对权限管理建模
- JAVA单例详解
- 解决数据库字段导致的下拉列表回显失效问题
- UVa 10161 - Ant on a Chessboard
- 基本数据类型参数传递与引用数据类型参数传递区别
- C++在VS下创建、调用dll
- 做一个开源的飞控板,可移植naze32代码,Crazyflie代码
- 根据T-code查找对应的BAPI
- Java程序实现五子棋小游戏
- org.apache.jasper.JasperException: Unable to compile class for JSP 解决方法
- UVa 11292 - Dragon of Loowater(贪心)
- perror() 和 dlerror()
- uva 10167 - Birthday Cake(最简单枚举)