【 前言 】
对于变量,我们再熟悉不过了,其实一直以来,变量也并不简单,我们很少系统地整理分类,更少研究变量对应的储存结构,这次就深入地了解一下变量,以及常量。
【 什么是变量,先从变量说起 】
一、变量的简单定义:通俗来说,变量就是可以被改变的数据。在程序中声明变量的语法格式如下: 数据类型 变量名称 = 值 例如:int x = 1,数据类型定义这个变量是什么类型的(有整型,浮点型等),变量名称只是个别名,值就是对应的数据。
二、变量的深入定义:由上面可知,变量就是一个可改变的数据,既然是数据,在计算机中肯定有对应的存储空间来存储这个数据。也就是说,变量其实就是内存中的一个存储空间,用来存储数据。那这么说,声明一个变量,也就是相当于变量空间的开辟,那么,变量的深入定义还对应上面简单定义哪些呢?
1、声明一个变量 = 变量空间的开辟
2、变量的数据类型 = 这个空间要存储什么数据?
3、变量名称 = 这个空间叫什么名字?
4、变量的值 = 这个空间的第一次数据是什么?
那么,这些变量空间在哪里呢?其实这些变量空间对应计算机内存的堆栈,下面会详细讲解。
【 按声明的位置来分类变量 】
1、成员变量:声明在方法之外的变量,不过没有 static 修饰。可以不设值,因为有默认值(下面数据类型会有默认值)。
2、局部变量:声明在类的方法中的变量。必须对其初始化,否则编译不过。
3、类变量:声明在方法之外的变量,用 static 修饰。
【 按数据类型划分 】
一、基本数据类型:
byte:在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0
int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0
long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L
float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0
char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
【 注意 】:整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级:byte、short、char—> int —> long—> float —> double。
具体转换类型有强制类型转换、自动类型转换如下:
(1)强制类型转换: 转换过程中可能导致溢出或损失精度
(2)自动类型转换:必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float 数据类型的位数为32,可以自动转换为64位的double类型。
(3)float和double区别:默认的浮点数都是double 只有在数组后边加上f才是 float的,float f=12.2f;这是定义一个float类型的数据
二、引用数据类型:
除了8种基本类型以外剩下的都是引用类型(类,接口,数组等,new 对象也是是引用类型), String:一定要注意,string是引用类型,不是基本类型。