数据类型与类型转换

一.数据类型

数据类型分类:
请添加图片描述
在这里插入图片描述

注:①.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 + ""; 

注:任何数据类型和字符串拼接的结果是字符串

猜你喜欢

转载自blog.csdn.net/weixin_63993025/article/details/126001688