首页 > 代码库 > 小康陪你学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)最后的输出类型是什么?它又是如何将不同的数据类型转换成相同的呢?下面是对该程序的执行结构分析: