您的位置:首页 > 编程语言 > Java开发

Java 中基本类型 和 引用类型 变量的区别

2017-07-26 22:44 477 查看
一。基本概念

java 中的 数据类型 分为两大类: 基本数据类型 和 引用数据类型

基本数据类型 : 数值型,浮点型, 字符型 和 布尔型。 它的 值 是一个数字,一个字符或一个布尔值。
引用数据类型 : 类,接口类型,数组类型, 枚举类型, 注解类型。 是一个 对象类型,它的 值 是 指向内存空间的引用,就是 地址,所指向的内存中保存着变量所表示的一个值或一组值。

二。 区别 -----  存储方式

1. 基本类型变量 声明 时,系统直接给该变量 分配空间,因此程序中可以直接操作

eg. int a; 声明变量a的同时,系统给a分配了空间,   故 可直接  赋值  a = 5;

2. 引用类型(或称为引用型)变量声明时,只 给该变量分配 引用空间, 数据空间 未分配。因此 引用型变量声明后 不能直接引用,必须通过 实例化 开辟数据空间,才能对变量所指向的对象进行访问
eg. MyDate today = 14; // 错误!因为today对象的数据空间未分配
MyDate today = new MyDate( 14 ); 正确! 首先执行 new MyDate()给today变量 开辟 数据空间,然后再执行 赋值 操作

3. 案例分析

申明一个类 MyDate,其中有属性day,mouth,year等,有构造方法(带参数),为其创建一个对象
MyDate day = new MyDate(8,8,2017);
在内存中的具体创建过程是:

1)首先在 栈内存 中为 day 分配一块 引用空间;
 
2)然后在 堆内存 中为 MyDate对象 分配一块空间,并为其三个属性设初值0,0,0;

3)根据类MyDate中对属性的定义,为该对象的三个属性进行赋值操作;
4)调用构造方法,为三个属性赋值为8,8,2017;(注意这个时候day 与MyDate对象之间还没有建立联系)

5)将MyDate对象在堆内存中的地址,赋值给栈中的day ; 通过句柄 day 可以找到堆中对象的具体信息



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: