Java 和 Scala 中的自动类型转换
1.Java 中的自动类型转换
// Java中的自动类型转换(隐式转换)
// 再进行自动类型提升的时候,是按照阶梯型一级一级的提升的
// byte->short->int->long->float->double
public static void main(String[] args) {
byte n = 23;
test(n);
}
public static void test(byte b) {
System.out.println("bbbb");
}
public static void test(short b) {
System.out.println("ssss");
}
public static void test(char b) {
System.out.println("cccc");
}
public static void test(int b) {
System.out.println("iiii");
}
2.Scala 中的自动类型转换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LamZ7pKv-1634560782972)(C:\Users\482426\AppData\Roaming\Typora\typora-user-images\image-20211018203534185.png)]
object Test07_TypeCast {
def main(args: Array[String]): Unit = {
//(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。
val a1: Long = 1 + 1L
val a2: Float = 1 + 1L + 1.1f
val a3: Double = 1 + 1L + 1.1f + 2.1
//(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。
val d1: Double = 3.1f
// val f1:Float = 3.1
// byte,short,char都是可以使用int值定义,但是不能超出范围
val b1: Byte = 100
//(3)(byte,short)和char之间不会相互自动转换。
val s1: Short = b1
// 只能写成明文的
val c1: Char = 100
// 原因就是符号问题,byte和short都是有符号的
// val c1:Char = b1
//(4)byte,short,char他们三者可以计算,在计算时首先转换为int类型。
val b2: Byte = 1
val b3: Byte = 1
// val b4: Byte = (b2+b3)
// val s4: Short = (b2+b3)
// 只能使用Int值接受
val s2: Short = 1
val s3: Short = 1
// val s5: Short = (s2+s3)
// 可以
val i3:Int = 1
val i4:Int = 1
val i5:Int = i3 + i4
}
}