1.基本数据类型转换分为强制类型转换和自动类型转换:
(1)自动类型转换:为将某种基本类型的值赋值给另外一种基本类型的变量,也可以说是把小范围的基本数据类型直接赋值给大范围的基本数据类型,系统会进行自动转换。
//小范围的数据类型转换为大范围的数据类型的时候,会自动进行转换
int m10 = 9;
float m11 = m10;
System.out.println(m11);
(2)强制类型转换:相当于把大范围的基本数据类型或者变量赋值给小范围的基本数据类型的时候,需要强制转换。在变量前面添加圆括号()。
/*
强制类型转换,就是把范围大的数据类型或者变量转换位范围小的数据变量
*/
var a_value = 32231;
byte b_value = (byte)a_value;
System.out.println(b_value);
2.字符串与基本数据类型的连接:任何基本数据类型都可以和字符串进行连接操作,其他基本数据类型会自动转换为字符串类型
//string类型可以和任何基本数据类型进行连接运算,任何基本数据类型会自动转换为字符串类型
String str2 = "Hello,World!"+23.56;
System.out.println(str2);
3.字符串转换基本数据类型:字符串类型不可以直接转换为基本数据类型,但是可以通过其包装类型转换为基本数据类型
//把字符串类型转换为int类型,需要使用到包装类型
String b = "54";
int c = Integer.parseInt(b);
System.out.println(c);
4.表达式的自动提升规则:
(1)所有的byte、char、short类型自动提示为int类型;
(2)整个算数表达式的类型自动提升到与表达式当中最高的操作数同样的等级类型;
byte a_byte = 4;
//不强转数据类型将会报错,因为a_byte -2 已自动提升为int类型了,不转,将是数据溢出
a_byte =(byte)(a_byte - 2);
System.out.println(a_byte);
//表达式当中的数据类型自动升级到最高操作数同样的等级
short a_short = 23;
double d = a_short - 3.23;
System.out.println(d);
(3)表达式结果的数据类型保持和操作数最高等级类型一致。
//表达式的类型将保持和最高等级操作数一样的类型
int e = 23 /5;
System.out.println(e);
double f = 23 /5.0;
System.out.println(f);
5.直接量:通过源代码直接给出的值
直接量赋值的规则:
(1)并不是所有的直接量都可以直接指定数据的值,直接量有三种基本类型:数值类型、null类型、字符类型
null类型的直接量就只有一个值,即null;
String类型的直接量就是使用双引号括起来的字符序列;
float类型的直接量使用的是在小数之后添加f或者F,如5.31F、531f;
(2)String类型的直接量不可以直接赋值给其他变量,null可以直接赋值给其他引用类型变量,包含String类型