八、 数据类型-整型详解
- java整型包括:
● 1byte占一个字节,取值范围-27~2(7-1) -128~127,默认值0
● 1short占2字节,默认值0
● 1int占4字节,默认值0
● 1long占8字节,默认值0 - java整型的三种表示方式:
十进制–常用
八进制–以0开头
十六进制–以0x开头 - java语言整型默认为int类型
a. int i1 = 100;//将一个int类型100字面值赋值给i1变量
b. long l1 = 123;
//将一个int类型100字面值赋值给long类型的l1,int类型容量小于long类型,所以以上程序存在类型转换,只不过叫“自动类型转换”
c. long l2 = 123L;
//由于123后面有一个L,所以l2为long类型,以上程序不存在类型转换,只是普通的复制语句
d. long l3 = 12147483647;
//程序将12147483647看成int类型,但数据本身没有超出int类型取值范围,可以将int类型转换为Long类型,存在自动类型转换;
e. long l4= 12147483648;
//程序将12147483648看成int类型,但数据本身超出int类型取值范围,所以无法编译成功,正确写法数据后面加L,即long l3 = 12147483648L;
f. long l5 = 1000L;int i2 = (int)l5;
//大容量向小容量转换,需要强制类型转换。
//将long类型转换为int类型,不能自动类型转换,需要强制类型转换,等号右侧的数据前要加强制类型转换符;强制类型转换后虽然编译可以通过,但是程序在运行阶段可能会损失精度,所以要谨慎使用。
g. byte b1 = 10; byte b2 = 127;
short s1 = 10; short s2 = 32767;
char c1 = 10; char c2 = 65535;
//规则:如果整数没有超出byte、short、char的取值范围,可以直接将这个整数直接赋值给byte、short、char类型。
九、 数据类型-浮点型详解
- 浮点型
● 1float占4字节,默认值0.0
● 1double占8字节,默认值0.0的 - 计算机的资源是有限的,但是现实世界的数据是无限的,用一个有限的资源存储一个无限的数据,我们只能在计算机存储一个近似的值,不能存储一个精确的值。
- java语言浮点型默认为double类型
double d1 = 1.2;
//强制类型转换:float f1 = (float)3.2;
//自动赋值运算:float f2 = 3.2F;
十、 数据类型-布尔型详解
- boolean类型的数据在java中只有两个值:true/false,没有1/0
- 主要用于逻辑运算和条件控制语句中
十一、 数据类型-基本类型转换
- 在java中,基本类型除boolean比较特殊外,其他类型均可相互转换
- 转换分为默认转换(自动类型转换)和强制转换(强制类型转换)
a. 默认转换:容量小的类型会默认转换为容量大的类型
i. byte–>short–>int–>long–>float–>double
● char和short均为2个字节,所以同级
● 所有的浮点型不管容量多少,统一认为比所有的整型数据大
ii. 不会相互转换
iii. byte、short、char之间不会相互转换,byte、short、char做混合运算时先各自转换为int类型,再做别的运算。
eg:byte b1 = 10; short s1 = 10; int i1 = b1+s1;
//java程序分编译期(只检查语法,不做运算)和运行期,编译阶段只知道b1+s1的结果是int类型,int类型无法直接赋值给byte类型
b. 强制转换
i. 将容量大的类型转换为容量小的类型,需要进行强制转换
ii. 只要不超出范围,可以将整型值直接赋值(注意只是赋值,有运算之后需要考虑编译过程的语法检查)给byte、short、char
总结:在多种类型混合运算的过程中,首先先将所有数据转换成容量最大的那种,再运算