Java基本数据类型变量自动提升、强制类型转换、String基本类型使用
文章目录
- 基本数据类型变量自动提升
- 特殊情况
- 强制类型转换
- String基本类型使用
基本数据类型变量自动提升
规则:
将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 。
byte、short、char-->int-->long-->float-->double
当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
public class hello {public static void main(String[] args) {int a = 10;int b = a; // 通过 int==>intlong c = a; // 通过 int==>longfloat d = c; // 通过 long==>floatdouble e = a; // 通过 int==>doublechar f = a; // 错误 int==>charint g = c; // 错误 long==>int}
}
特殊情况
byte、short、char之间的运算结果为int类型
如: byte类型 + short类型 = int类型 、byte类型 + byte类型 = int类型 、short类型 + short类型 = int类型 short类型+char类型 = int类型
public class hello {public static void main(String[] args) {byte a = 10;short b = 20;short c = a + b;}
}
- 整型常量,规定是
int
类型 - 浮点型常量,规定是
double
类型
public class hello {public static void main(String[] args) {long a = 123l;long b = 123; // 自动类型提升 int==>longlong c = 123123123123; // int类型超出了范围 报错long d = 123123123123l; // 正确float e = 12.3f;float f = 12.3; // 报错double==>float byte a1 = 10;//byte a2 = a1 + 1; // 报错int a2 - a1 + 1;double a3 = 10 + 12.3;}
}
强制类型转换
规则:
将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。自动类型提升是 Java 自动执行的,而强制类型转换是自动类型提升的逆运算,需要我们自己手动执行。
转换格式:
数据类型 T 变量名 = (数据类型 T)被强转数据值
- 当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度或溢出。
int a = (int) 3.14 // 3double d = 1.2;int num = (int)d; // 1int i = 200;byte b = (byte) i;// 溢出
- 当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强
制类型转换是没有风险的,通常省略。
int a = 1;int b = 2;double bigger = (double)(a/b);
String基本类型使用
- String 不是基本数据类型,属于
引用数据类型
,俗称字符串 - 使用一对
" "
来表示一个字符串,内部可以包含 0 个、1 个或多个字符。 - 声明方式与基本数据类型类似。例如:String str = “Hello”;
- Sring与基本数据类型变量之间的只能做链接运算,使用“+”标识
- 运算结果是String类型
int num = 10;boolean flag = true;String a = "abc"; String b = a + num + flag; System.out.println(b);// abc10true