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

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

//基本数据类型參数传递
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方法。结束程序。

我们看看结果:

我们从两个代码打印出的结果能够看出结果与我们的分析是全然一致的。

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

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

  1. JavaSE学习笔记(1)---数据类型、运算符、控制结构

    javaSE学习笔记(1) 数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线 ...

  2. javaSE学习笔记(16)---网络编程

    javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...

  3. javaSE学习笔记(15) ---缓冲流、转换流、序列化流

    javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...

  4. javaSE学习笔记(11)--- Map

    javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...

  5. JavaSE学习笔记(9)---集合类和泛型

    JavaSE学习笔记(9)---集合类和泛型 1.Collection集合 集合概述 在前面我们已经学习过并使用过集合ArrayList<E> ,那么集合到底是什么呢? 集合:集合是jav ...

  6. JavaSE学习笔记(7)---数组

    JavaSE学习笔记(7)---数组 1.什么是数组 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个 ...

  7. JavaSE学习笔记(4)---抽象类和接口

    JavaSE学习笔记(4)---抽象类和接口 抽象方法和抽象类 ·抽象方法 使用abstract修饰的方法,没有方法体,只有声明.定义的是一种"规范",就是告诉子类必须要给抽象方法 ...

  8. JavaSE学习笔记(3)---面向对象三大特性

    JavaSE学习笔记(3)---面向对象三大特性 面向对象的三大特征:继承.封装.多态 1.封装 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改.然 ...

  9. JavaSE学习笔记(2)---面向对象基础

    JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...

随机推荐

  1. How to remove a Data Guard Configuration from Primary Database (文档 ID 733794.1)

    APPLIES TO: Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.3 [Release 10.1 to 11. ...

  2. python登录验证程序

    自己写的一个python登录验证程序: 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失 ...

  3. 洛谷—— P1062 数列

    https://www.luogu.org/problem/show?pid=1062#sub 题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增 ...

  4. 洛谷——P1046 陶陶摘苹果

    https://www.luogu.org/problem/show?pid=1046 题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有 ...

  5. Lintcode 将整数A转换为B

    例子 如把31转换为14,须要改变2个bit位. ()10=()2 ()10=()2 贴代码 class Solution { public: /** *@param a, b: Two intege ...

  6. ASP.NET MVC 入门4、Controller与Action

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/04/1303672.html Controller是MVC中比較重要的一部分.差点儿全部的业 ...

  7. amazeui学习笔记--css(常用组件7)--输入框组Input-group

    amazeui学习笔记--css(常用组件7)--输入框组Input-group 一.总结 1.使用:Input group 基于 Form 组件和 Button 组件扩展,依赖这两个组件.在容器上添 ...

  8. SQL Server 中计算农历

    1.建一表,放初始化资料   因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入!   CREATE TABLE SolarData ( yearId int no ...

  9. git的安装及其使用

    在Windows上安装Git的快捷方式: 工具:1.Windows的console工具:ConEmu(https://conemu.github.io/)多窗口.记录log.多theme选择,操作Gi ...

  10. MySql开发之函数

    1,在mySql常见的文本函数中常见的文本函数例如以下表所看到的: 2,数字函数例如以下: 3,日期和时间函数: 4,格式化日期和时间 使用的函数例如以下DATE_FORMAT()和TIME_FORM ...