数据转换
变量在第(3)篇中有讲到过八种数据类型,分别是能够用来表示整型的byte、short、int、long和表示浮点型的float、double以及字符型char、布尔型boolean。
那就又衍生了一个问题:我怎么让int型的1转成byte型的1呢?
so easy,把byte型变量赋值给int型就可以啦~
byte a = 1;
int b = a; // 这时候b的值就会是1了
像这样就完成了转换。
然鹅,这里要注意的是因为是从范围小的byte转成范围大的int,所以可以直接转。那么如果是从范围大的int转成范围小的byte呢?
我们就需要给后面的值做一个强调,like this:
int a = 1;
byte b = (byte) a;
这个操作【(byte)
】就是强转了。当然,如果a是超过了byte的范围-128~127的话,那么就会丢失精度。比如:
int a = 130;
byte b = (byte)a;
System.out.println("b="+b);
130超过127了吧,我们看看运行结果:是的,结果果然就不是130,而变成了-126。Java在这个强转之后把多余的2加上了(-128)就成了-126了。所以呀,强转要注意范围区间哟!
好了,讲到这里,需要给三个定义了:
- 优先级:是根据数据类型分配空间的大小,取值范围的不同来划分。(按字节呗,详见下表)
- 从优先级低的数据类型转成优先级高的数据类型是可以直接进行转换的,这种转换就叫隐式类型转换。
- 从优先级高的数据类型转成优先级低的数据类型是不能直接进行转换的,需要进行强转,这种转换就叫显式类型转换。
引用类型
除了上表中八种基本类型之外,Java还有一种比较特殊的类型,叫引用类型。
引用了,就是在别的地方写好了,我在这里用嘛~Java的引用类型只想的是一个对象,不是像byte、int这种是一个原始值。
当然了,既然叫引用类型,那么根据它引用的对象的不同,我们大致上可以把引用类型分为三种,类、接口和数组。(就这么一说,之后再仔细讲)。
那么怎么用呢?比如说我这里有个用户实体类(User),那么我们用的时候就是
User user = new User();
这里的user
变量就是引用类型啦~
当然,常用的String也是一个类,String str = "ahan";
这个str也是引用类型哦~
以上,阿里嘎多,20190411 from ahanwhite。