标签:回顾 strong float 溢出 int 系统 log str als
在开始工作至今,学习各种各样的技术之中发现自己的很多Java的基础知识都忘了⊙﹏⊙b汗。。。 而且越是学习越是发现Java基础的重要性,所以准备单独抽一下时间进行Java基础的重新学习。在重新学习的时候,对这些又有了不同的感悟,于是准备将这些都记载下来,并整理成博客,希望能够帮助那些需要的人。
基本数据类型主要有这几个:
byte、short、int、long、float、double、char、boolean
可以分为三类:
数值类型的级别从低到高分别为:
byte,char,short(这三个平级)——>int——>float——>long——>double
其中由低级别转到高级别,是属于自动类型转换,这点是由系统自动转换的。
例如将int类型的数据转为float类型的数据。
示例:
int i=10; float j=i; System.out.println("i:"+i+",j:"+j);
结果:
i:10,j:10.0
如果由高级别转为低级别,则需要强制转换,也就是强制类型转换。
例如将int类型的数据转换为byte类型的数据。
示例:
int i=127; int j=128; byte bye=(byte)i; byte bye2=(byte)j; System.out.println("i:"+i+",bye:"+bye); System.out.println("j:"+j+",bye2:"+bye2);
结果:
i:127,bye:127 j:128,bye2:-128
说明:因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。所以在进行强制类型转换的时候,要注意取值范围!
在强制转换的时候需要注意数据的精确度,否则可能会出现数据精确丢失。
例如 double类型的数据转换为float类型数据。
示例:
double d=10.1111115; float f=(float) d; System.out.println("f:"+f+",d:"+d);
结果:
f:10.111112,d:10.1111115
了解了数据类型的级别之后,如果用不同的数据类型进行计算,那么最终的数据类型又是哪一种呢?
这里我们用这几种来测试:
1.byte 类型的数据 加 short 类型的数据;
2.short 类型的数据 加 int 类型的数据;
3.int 类型的数据 加 long 类型的数据;
这里我们使用这个方法来获取最终的数据类型
public static String getType(Object o){ return o.getClass().toString(); }
代码:
short a=1; byte b=2; int c = 3; long d = 4; System.out.println(getType(a)); System.out.println(getType(b)); System.out.println(getType(c)); System.out.println(getType(d)); System.out.println(getType(a+b)); System.out.println(getType(a+c)); System.out.println(getType(c+d));
结果:
class java.lang.Short class java.lang.Byte class java.lang.Integer class java.lang.Long class java.lang.Integer class java.lang.Integer class java.lang.Long
看到结果是不是有点吃惊呢?那么是为什么呢?
这里的不同的数值类型数据进行相加的时候,会自动转换为级别最高的那一个。
那么short 类型的数据加 byte 类型的数据为什么是int类型呢?
因为在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。
如果上述不好理解的,那么这里我们来做个实验测试下,通过结果来进行验证。
示例:
short a=1,b=2; byte c=3,d=4; System.out.println(getType(a+b)); System.out.println(getType(c+d));
结果:
class java.lang.Integer class java.lang.Integer
那么这里可以得出结论,在数值类型中,若级别小于int,进行计算的时候,最终的数据类型会自动转换为int,如果高于int,最终数据结果会取其中最高的一个!
标签:回顾 strong float 溢出 int 系统 log str als
原文地址:https://www.cnblogs.com/tdskee/p/10390082.html