2020-04-14-Java-基本类型与转换

变量占用的字节

我们都知道基本类型,byte跟boolean是1个字节,short跟char是2个字节,int跟float是4个字节,long跟double是8个字节。

类型转换

小类型是可以直接向大类型转换的,但是反过来,就有可能造成数据丢失,必须显式的进行类型转换。同时浮点类型向整数类型转换,也有可能造成数据丢失,必须显式转换。

        int a = (int) 101L;
        int b = (int) 1.1f;
                float c = 11;
                long d = 11;

这里浮点数转换成整数,默认进行的是截尾操作,如果要进行取舍,可以使用Math.round()方法。
还有一种特殊情况,就是两个整数类型相除的时候,必须要对其中一个进行类型转换,才能得到一个浮点数。比如下面这段代码,p1得到的结果是1.0,只有p2和p3才能得到正确的结果。

        float p1 = (float)((1 + 4) / 3);
        float p2 = (float)(1 + 4) / 3;
        float p3 = (1 + 4) / (float)3;

一个大类型跟一个小类型数据进行运算,比如加减乘除,会自动转换成大类型,如果要赋值给小类型,也必须显式转换。

int i = (int) (101L + 11);

最后,在java中进行按位运算的时候,会自动转换成int类型。

byte a = 9;
byte b = 6;
byte c = (byte) (a | b);

虽然java中整数的默认类型是int,但是上面直接把9赋值给byte类型是可以的,因为编译器能够识别这个常量在byte能够接受的范围内。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容