首页 > 代码库 > 小康陪你学JAVA--------运算符及表达式的类型转换

小康陪你学JAVA--------运算符及表达式的类型转换

下面列出了各个运算符的优先级的排列,数字越小的表示优先级越高。

    Java还有一些相当简洁的写法,是将算术运算符和赋值运算符结合成为新的运算符,下面列出了这些运算符。

                                  

 

       当int类型遇上了float类型,到底谁是“赢家”呢?在前面曾提到过数据类型的转换,在这里,要再一次详细讨论表达式的类型转换。

       Java是一个很有弹性的程序设计语言,当上述的情况发生时,只要坚持“以不流失数据为前提”的大原则,即可做不同的类型转换,使不同类型的数据、表达式都能继续存储。依照大原则,当Java发现程序的表达式中有类型不相符的情况时,会依据下列的规则来处理类型的转换。

 

1、 占用字节较少的类型转换成占用字节较多的类型。

2、 字符类型会转换成 int 类型。

3、 int 类型会转换成 float 类型。

4、 表达式中若某个操作数的类型为 double,则另一个操作数字也会转换成 double

类型。

5、 布尔类型不能转换成其它类型。

 

01 // 下面的程序说明了表达式类型的自动转换问题

02 public class TestJava3_22

03 {

04    public static void main(String[] args)

05  {

06       char ch = ‘a‘ ;

07       short a = -2 ;

08       int b = 3 ;

09   float f = 5.3f ;

10       double d = 6.28 ;

11

12       System.out.print("(ch / a) - (d / f) - (a + b) = ");

13       System.out.println((ch / a) - (d / f) - (a + b));

14  }

15 }

输出结果:

(ch / a) - (d / f) - (a + b) = -50.18490561773532

先别急着看结果,在程序运行之前可先思考一下,这个复杂的表达式(ch / a)- (d / f) – (b + a)最后的输出类型是什么?它又是如何将不同的数据类型转换成相同的呢?下面是对该程序的执行结构分析: