Java基本数据类型和自动转换

2017, Sep 18    

Java基本数据类型和自动转换

1.自动数据类型转换

自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低———————————————>高
(byte,short,char)-> int -> long -> float -> double;

基本数据类型之间除了boolean,其他数据类型之间可以任意的相互转换(强制转化或默认转换);没有final修饰时,byte short char在运算时都会转为int类型
byte->short;

注意:

首先,整数值默认 就是int类型,除此之外还有两种特殊情况:
1.如果直接将较小的整数值(在byte或short或char类型的表数范围内)赋给一个byte或short或char变量,系统会自动把这个整数值当成byte或short或char类型来处理
2.如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理,如果希望系统把这个整数值当成long类型来处理,应在这个整数值后增加英文字母l或者L作为后缀。

2.运算中的实际应用

当使用 +、-、*、/、%、运算操作是,遵循如下规则: 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型,如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型,如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型,否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。

注意

1.short s = 1; s += 1; 会虚拟机编译成s = (short)(s+1)
2.short s = 1; s++或++s也是上理
3.final short b4 = 4,b5 = 6;
                           b6=b4+b5;
b4、b5被声明final 所以类型是不会转换,所以和的类型视左边变量类型而定,即b6可以是任意数值类型。
4.final short b4 = 4
short b1 = 5
b8=(b1+b4)
虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(short)(b1+b4);