说到Java中变量,很多人会想到汉语中的代词,当然,这种理解我也是很支持滴!那么再说的具体点,我比较喜欢用“他”或者“她”来解释变量,就像我们生活中总是会向“他”述说“她”或向“她”述说“他”.....(好啰嗦!),但是,这个“他”或“她”从来没有固定不变地指明就是“小明”或“小红”,也就是说他所指向的人是在一直变换的,而这个“他”或“她”在Java中或者其他语言中就可以理解为变量。
跑题了啊,那么现在说说Java中的8种基本数据类型,分别是byte,short,int,long,float,double,char,boolean。
byte:字节型,1个字节(8位),最大表示范围-128~127
short:短整型,2个字节(16位),最大表示范围-2^15~2^15-1
int:整型,4个字节(32位),最大表示范围-2^31~2^31-1
1)整数直接量(Java程序的整数)默认为int型,不能超范围,否则会编译错误;
2)两个整数相除,结果还是整数,小数位无条件舍弃;
3)运算时超出范围会发生溢出,溢出是需要避免的。
long:长整型,8个字节(64位),最大表示范围-2^63~2^63-1
1)长整型直接量为在数字后加l或L;
2)算数运算时有可能超范围,建议在第1个数字后加L
float:浮点型(单精度),4个字节(32位),在普通数据存储中由于float型数据精度不够,所以很少使用。
double:浮点型(双精度),8个字节(64位),很大很大很大
1)浮点数直接量默认为double型,精度是float的俩倍,表示float型需加f或F
2)double型数据运算时,可能会发生舍入误差。比如在计算1/10或3.0-1.9。
char:字符型,2个字节(16位),最大表示范围0~65535
1)采用Unicode编码,每个字符(char)都有一个对应的码(int)
表现形式为char字符,实质上是int码
2)字符必须放在单引号中,有且仅有一个
3)特殊符号需通过\来转义
boolean:布尔型,1个字节(8位)
1)只能取值为true和false
当然,这8种基本的数据类型之间是可以相互转换的,下面说转换的方式和规则:
类型从小到大依次为:
byte,short,int,long,float,double
char和int并列。
1)两种方式:
1.1)自动类型转换:从小类型到大类型
1.2)强制类型转换:从大类型到小类型。强转有可能会溢出和精度丢失,比如将double型的2.345转换为int型的,结果为2,精度丢失,同样将double型的2147483648转换为int型的,结果为-1,溢出。
2)两点规则:
2.1)整数直接量可以直接赋值给byte,short,char,但不能超范围
2.2)byte,short,char型变量参与运算时,先一律转为int再运算