Java011——Java数据类型转换(基本数据类型)
回顾:Java八大基本数据类型
============================================================================================
大类 类型名称 关键字 占用内存 取值范围
--------------------------------------------------------------------------------------------
|字节型 byte 1 字节 -128~127
整型 |短整型 short 2 字节 -32768~32767
|整型 int 4 字节 -2147483648~2147483647
|长整型 long 8 字节 -9223372036854775808L~9223372036854775807L
--------------------------------------------------------------------------------------------
|单精度浮点型 float 4 字节 +/-3.4E+38F(6~7 个有效位)
浮点型 |双精度浮点型 double 8 字节 +/-1.8E+308 (15 个有效位)
--------------------------------------------------------------------------------------------
字符型 |字符型 char 2 字节 ISO 单一字符集
--------------------------------------------------------------------------------------------
布尔型 |布尔型 boolean 1 字节 true 或 false
============================================================================================
这里只讨论8大基本类型中的7个类型,不涉及boolean类型
围绕以下3点学习:
1、什么是Java数据类型转换?
2、自动类型转换
3、强制类型转换
什么是Java数据类型转换?
数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。
Java数据类型转换包括:自动类型转换
和强制类型转换
。
一、自动类型转换
自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。
发生情景:容量小的和容量大的做运算,结果会自动
变成容量大的对象的数据类型,即
byte、char、short --> int --> long --> float --> double
特别的:当byte、char、short三种类型的变量做运算时,结果为int型
说明:
1、此时的容量大小指的是,表示数的范围的大和小。比如float容量要大于long的容量
2、不同类型的数字先转换成同类型,再运算
二、强制类型转换
人为通过代码将数据进行类型转换,即强制类型转换。
发生情景:容量大的转换成容量小的,就需要进行强制类型转换。
格式:
(数据类型)变量; 或者(数据类型)变量值
例如:(int) num; 或 (int)15.2;
例如
float a = 100f;
int b = (int)a;//将a从float类型强制转换成int类型
强制类型转换可能会造成内存溢出
,或者数值精度丢失
问题
1、内存溢出
a、显式内存溢出
int a = 128;
byte b = (byte)a;//内存溢出,因为byte类型最大只能表示127
b、隐式内存溢出
byte c = 5;
byte d = 32;
int e = c * d;//出现内存溢出,因为在赋值给e前,c*d结果还是byte类型,
//但是c*d等于160,大于byte类型最大值127,所以会溢出
int f = c * (int)d//正确写法
2、数值精度丢失
float a = 25.63;
int b = (int)a;
System.out.println(b);//输出结果是25,而不是25.63,造成精度丢失0.63
还没有评论,来说两句吧...