一、类型转换
(针对基本数据类型之间的相互转换)
1、转换规则
- 自动类型转换 (小转大):数据范围小转换成数据范围大(小容量转换成大容量)
- 强制类型转换 (大转小):数据范围大转换成数据范围小(大容量转换成小容量)
- 注:强转需加强制类型转换符,程序才能编译通过,但运行阶段可能会损失精度,所以谨慎使用
2、注意点
- 八种基本数据类型中除布尔类型boolean外,其余的七种基本数据类型之间可相互转换。
- 当整数字面值没超过byte、short、char的取值范围,可直接赋值给byte、short、char类型的变量。
- char和short可表示的取值范围数据量相同,但char可取更大的正整数,原因是char无负数取值。
- byte、short、char混合运算时,都各自先转换成int类型再做运算。
- 任何浮点型不管占用多少个字节,都比整数型容量大。比如,long型占8个字节,float型占4个字节,但浮点型float容量比长整型long大。
- 多种基本数据类型混合运算时,先转换成当中容量最大的那种类型再做运算。
3、“栗子”
"胶己" 整理的 "栗子"
package javabasis;
public class TypeConversion {
public static void main(String[] args) {
System.out.println("举“栗子”");
/**
* 没有类型转换
* 1、当整数字面值没超过byte、short、char的取值范围,可直接赋值给byte、short、char类型的变量
* 2、char和short可表示的取值范围数据量相同,但char可取更大的正整数,原因是char无负数取值。
*/
byte numByte1 = 12; // byte 取值范围:-128~127
short numShort1 = 32767; // short取值范围:-32768~32767
char numChar1 = 97; // char 取值范围:0~65535
System.out.println("numByte1 = " + numByte1);
System.out.println("numShort1 = " + numShort1);
System.out.println("numChar1 = " + numChar1);
System.out.println("---------华丽的分割线1------------");
/**
* 自动类型转换 (隐式)
* 1、数据范围小转换成数据范围大(小容量转换成大容量)
* 2、整数型默认为int型
* 3、任何浮点型不管占用多少个字节,都比整数型容量大
*/
long numLong1 = 120; // 整数型默认为int型,所以120为int型,赋值给long型变量,小容量转换成大容量,属于自动类型转换
float numFloat1 = numLong1; // long占8个字节,float占4个字节,但浮点型float容量比长整型long大。
System.out.println("numLong1 = " + numLong1);
System.out.println("numFloat1 = " + numFloat1);
System.out.println("---------华丽的分割线2------------");
/**
* 强制类型转换 (显式)
* 1、数据范围大转换成数据范围小(大容量转换成小容量)
* 2、强转需加强制类型转换符:也就是在字面值前赋值运算符后加上小括号和想要转换的类型
* 3、强转在运行时可能损失精度,所以谨慎使用
*/
long numLong2 = 1000L;
int numInt2 = (int)numLong2;
System.out.println("numLong2 = " + numLong2);
System.out.println("numInt2 = " + numInt2);
byte numByte2 = (byte)128;
System.out.println("numByte2 = " + numByte2); // -128 损失精度
System.out.println("---------华丽的分割线3------------");
// 多种基本数据类型混合运算时,先转换成当中容量最大的那种类型再做运算
byte numByte3 = 8;
int numInt3 = 20;
double numDouble3 = 120.2;
// byte、int、double三种不同类型混合运算,先将小容量byte和int转换成大容量double再做运算
double result = numByte3 + numInt3 + numDouble3; // result = 8.0 + 20.0 + 120.2
System.out.println("result = " + result);
}
}
运行 结果
🍅🍅🍅 以往文章 👇
001_Java语言发展历程
002_Java语言的八大特性
003_浅析JDK、JRE、JVM的区别和联系
004_JDK的下载安装与环境变量的配置
005_常用DOS命令
006_Java关键字、标识符、注释
007_Java八大基本数据类型
009_Java运算符
010_Java流程控制语句