相信很多第一次接触编程的人听到这东西肯定会觉得很难理解,说到底,向上转型和向下转型都只是你变量类型的一个转换,比如:
short a = 10;
a = a + 20;
//看这段代码 你们说输出结果会是多少?
相信很多不了解的人都会说是30 ,但是结果是会报错
这就是代码的一个向上转型 , 我们都知道 java的默认数据类型是int 类型
所以 20 这个数的类型其实是int
short类型的 a 想与 20 相加 就必须要向上转成int类型 但是加完之后结果的 30 也是 int 类型的
想要把 int 类型的数值从新赋值回去 short 类型的 a ,结果肯定是会报错的,
那如果我们非要这样做,应该怎么办呢?
short a = 10 ;
a = (short) (a + 20); //在(a + 20)的前面加上(short) 记住不要漏掉括号
这就是向下转型
数值类型在做加减乘除等操作的时候都会默认的向容量大的一方向上转型
但是要向下转型回原来的数值 就需要自己手动转了
PS: 向下转型可能会出现一些精度丢失的问题
double a = 10.99 ;
int b = (int) (a + 10);
System.out.println(b);
输出的内容是 20 int 浮点(小数)类型转换成整数类型的时候,后面的小数位会被直接砍掉,而不是四舍五入.
byte a = 127 ;
a = (byte) (a + 1);
System.out.println(a);
结果会是多少?
是 -128 为什么?
因为byte的取值范围是-128~127之间 但是 127+1之后的值已经超出了 byte 的取值范围
所以它又绕了一圈 回到了-128 …
PS:向上转型和向下转型不单只是这么点用途 之后在面向对象里面 用途会十分的广泛