[javase学习笔记]-6.6 基本数据类型参数与引用数据类型参数的传递过程

这一节基本数据类型参数和引用数据类型参数的传递过程。

数据类型参数和引用参数我们在前面章节中都已涉及到了,那么我们来看看下面的两段代码:

//基本数据类型参数传递
class Demo
{
	public static void main(String[] args)
	{
		int x = 3;
		change(x);//调用方法
		System.out.println("x = " + x);//
	}
	public static void change(int x)
	{
		x = 4;
	}
}

//引用类型数据参数传递
class Demo
{
	int x = 3;
	public static void main(String[] args)
	{
		Demo d = new Demo();
		d.x = 9;
		change(d);
		System.out.println("d.x = " + d.x);
	}
	public static void change(Demo d)
	{
		d.x = 4;
	}
}

现在我们来分别对这两对代码的运行程分析一下。

一、对于基本数据类型参数传递代码的运行过程分析:

1.main方法进栈内存,main方法中有基本数据类型变量int x;

2.为main方法中的变量x赋值为3;

3.调用change(x)方法,则change方法进栈;

4.为change方法变量x赋值为4;

5.跳出change方法,同时change方法出栈,释放所有change方法和change方法中的x,即把x=4释放掉;

6.执行打印语句,些时的栈中只有main方法中的x,那么打印出的x=3;

7.跳出main方法,结束程序。

我们来看一下打印结果与我们的分析是不是一致的?

二、对于引用数据类型参数传递代码的运行过程分析:

1.main方法进栈内存,main方法中有一个类类型变量Demo d;

2.new创建Demo对象,在堆内存中开辟一个空间,并把空间地址传给d(我们这里假设为0x0078),并为该地址中的x初始化为0,然后把3赋给x;

3.把d所指堆内存(0x0078)中的x赋为9;

4.调用change(d)方法,change方法进栈,change方法中的对象d就是main方法中的d,指向之前的堆内存地址(0x0078);

5.把d所指堆内存(0x0078)中的x赋为4;

6.跳出change方法,同时change方法出栈,释放change方法和方法中的对象d;

7.执行打印语句,些时的栈中也是只有main方法,并且d指向堆内存(0x0078),该地址中的x就是步骤5中的值4;

8.跳出main方法,结束程序。

我们看看结果:

我们从两个代码打印出的结果可以看出结果与我们的分析是完全一致的。

那么,基本数据类型参数和引用数据类型参数的过程就是我们上面分析的过程。

时间: 2024-08-04 18:26:03

[javase学习笔记]-6.6 基本数据类型参数与引用数据类型参数的传递过程的相关文章

javasE学习笔记:关键字super的使用

/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. 注意: 子类的构造方法中一定要调用父类的构造方法.... */ javasE学习笔记:关键字super的使用,布布扣,bubuko.com

大数据学习笔记6·社会计算中的大数据(4)

上一篇介绍了LifeSpec项目,这个项目是关于用户理解和用户画像的.这篇是社会计算部分的最后一篇,关于用户连接和图隐私. 用户连接与隐私保护 用户连接与隐私保护有很强的相关性. 上图中,左边有两个网络.对于用户连接,我们的目标是映射这两个网络和连接这些网络中的用户节点.然后,我们就能产生一个更大的网络.这样,用户就能够被连接在一起,我们就可以知道跨网络的用户信息. 但是,如果从隐私的角度来看这个问题,把第一个图看成一个匿名化处理后的图,称其为目标图:把第二张图看成辅助图或者攻击者可获得的信息.

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-

mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)

继续 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) 五.使用监听器启动Spring容器 1.修改pom.xml文件,添加Spring-web 2.修改web.xml,配置启动Spring容器 3.新建BookServer 4.新建BookServlet 5.修改ApplicationContext.xml 6.测试 继续!!! 五.使用监听器启动Spring容器 1.修改pom.xml,添加Spring-web包(注:上一篇中的pom

Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)

第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 可以使用Excel web access承载Excel表格,这样可以使用Sharepoint 自带的filter webpart和Excel Web Access结合使用,无代码的对Excel做更精细化的控制. Sharepoint2013商务智能学习笔记之Excel Service展示Sql Se

EF学习笔记(八):更新关联数据

学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: 对于Course来说,新增时候必须定义属于哪个Department,所以在新增.更新操作的时候,必须要用户选择Department: MVC5在选择基础控制器及视图框架的时候,如果选择EF的操作框架,则会自动带一

[javase学习笔记]-6.6 基本数据类型參数与引用数据类型參数的传递过程

这一节基本数据类型參数和引用数据类型參数的传递过程. 数据类型參数和引用參数我们在前面章节中都已涉及到了,那么我们来看看以下的两段代码: //基本数据类型參数传递 class Demo { public static void main(String[] args) { int x = 3; change(x);//调用方法 System.out.println("x = " + x);// } public static void change(int x) { x = 4; } }

C++学习笔记之——内联函数,引用

本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫追风 一直想开始写C++的学习笔记,学习C++已经两个月了,今天开始写一下引用,内联函数,的一些概念和作用吧.那么开始吧! ????内联函数: 我们写的程序最终都是要用编译器,进行编译链接形成一段机器可以知道的二进制代码,接着存到一个内存中,这时候每一段程序代码都会有自己的一个地址,计算机按照地址增

EF学习笔记(七):读取关联数据

总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 本篇参考原文链接:Reading Related Data 本章主要讲述加载显示关联数据: 数据加载分为以下三种 Lazy loading 这种加载方式在于需要用到这个导航属性数据的时候,才会去数据库取数据,如下图,循环中,每一次都去数据库取一次数据: Eager loading 这种加载方式则是先定义好哪个导航属性数据需要一起加载(通过是.Inclue),然后在加载主数据的时候,一并把导航数据全部加载,如下图: Expl