一.数据类型
数据类型分类:
注:①.8bit为一个字节,例如整型的范围计算方法:整型为4字节,也就是32bit,其中一个是符号位(表±),其余31bit可以用来表数值位 ,由于可以有0和1两个数表示,即表示范围为2³¹~-2³¹,因为其中包括0,所以正数的范围为2³¹-1,最终为-2³¹~2³¹-1。其它数据类型范围的计算过程如上。
②.引用数据类型暂不做介绍。
二.类型转换
1.不同类型转换
①自动类型转换
java语言会在下列条件同时成立的时,自动进行数据类型转换:
ⅰ转换前的数据类型与转换后的类型兼容。
ⅱ转换后数据类型的表示范围比转换前数据类型的表示范围大。`
条件ⅱ说明不同类型的数据进行运算时,需先转换为同一类型,然后进行运算。转换从“短”到“长”的优先关系为:
若是想将int类型的变量a转换为float类型,由于int与float皆为整数类型,符合上述条件ⅰ,而float的表示范围比int大,也符合条件ⅱ,因此Java语言会自动将原为int类型的变量a转换为float类型。
代码如下:
int a=10;
float b=a;//a的范围小,编译器会自动提升为float,然后赋值
输出 b=10.0
注:
由于boolean类型只能存放true或false,与整数及字符不兼容,因此不可能做类型的转换
②强制类型转换
如果要将较长的数据转换成较短的数据时,就要进行强制类型转换。
格式如下
(欲转换的数据类型)变量名
int a= 3;
double d = 5.12;
d = a; // int-->double,数据范围由小到大,隐式转换
a= (int)d; // double-->int, 数据范围由大到小,需要强转,否则编译失败
③类型提升
ⅰ. 当不同数据类型计算时,范围小会被提升到范围大的,在进行计算。
举个例子:int和duoble
int a=10;
double b=15.0;
double c=a+b // 编译成功:a + b==>int + long--->long + long 赋值给long
输出 25.0
ⅱ. short或byte的运算
byte a=10;
byte b=10;
byte c=a+b;
System.out.println(c);//编译出错
原因如下:
在一个表达式中若有整数类型为short或byte的数据参加运算,为了避免溢出,Java会将表达式中的short或byte类型的数据自动转换成int类型,这样就可以保证其运算结果的正确性,这也是Java语言所提供的“扩大转换”功能。
2.字符串型数据与整型数据相互转换
①字符串转换为数值数据
方法:
例如:
String a="123.567"
float b=Float.parseFloat(a);//将字符串型变量a的值转换成浮点型数据后,赋给变量b
②数值类型转换为字符串
在Java语言中,字符串可用加号“+”来实现连接操作。
例如:
int num = 10;
String str1 = num + "";
注:任何数据类型和字符串拼接的结果是字符串