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 分配一块 引用空间;
4)调用构造方法,为三个属性赋值为8,8,2017;(注意这个时候day 与MyDate对象之间还没有建立联系)2)然后在 堆内存 中为 MyDate对象 分配一块空间,并为其三个属性设初值0,0,0;
3)根据类MyDate中对属性的定义,为该对象的三个属性进行赋值操作;5)将MyDate对象在堆内存中的地址,赋值给栈中的day ; 通过句柄 day 可以找到堆中对象的具体信息