零度非安全 发表于 2017-1-15 16:59:30

【Java 教程(原创)】010.运算符与表达式(上)

本帖最后由 零度非安全 于 2017-1-19 14:40 编辑

【Java 教程(原创)】索引帖

Java 提供了丰富的运算符,如 算术运算符、关系运算符、逻辑运算符 和 位运算符 等。

static/image/hrline/4.gif

算术运算符与算术表达式


1> 加、减运算符
加、减运算符 +、- 是二目运算符,即连接两个操作元的运算符。加、减运算符的结合方式是从左到右。例如 2 + 3 - 8,先计算 2 + 3,然后再将得到的结果减 8。加、减运算的操作元是整型或浮点型数据,加、减运算符的优先级是 4 级。

2> 乘、除和求余运算符
乘、除操作和求余运算符 *、/、% 是二目运算符,结合方向是从左到右。例如 2 * 3 / 8,先计算 2 * 3,然后再将得到的结果除以 8。乘、除和求余运算符的操作元是整型或浮点型数据,乘、除和求余运算符的优先级是 3 级。

用算术符号和括号连接起来的符合 Java 语法规则的式子称为算术表达式,如 x + 2 * y - 30 + 3 * (y + 5)。

自增、自减运算符

自增、自减运算符 ++、-- 是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量,作用是使变量的值增 1或减 1。例如:
++ x(-- x) 表示在使用 x 之前,先使 x 的值增(减) 1。
x ++(x --) 表示在使用 x 之后,使 x 的值增(减) 1。
粗略的看,++ x 和 x ++ 的作用相当于 x = x + 1。但 ++ x 和 x ++ 的不同之处在于,++ x 是先执行 x = x + 1 再使用 x 的值,而 x ++ 是先使用 x 的值.再执行 x = x + 1。如果 x 的原值是 5,则:
对于“y = ++ x;”,y 的值为 6,
对于“y = x ++;”,y 的值为 5。
算术混合运算的精度

精度从“低”到“高”的排列顺序是 byte、short、char、int、long、float、double。

Java 在计算算术表达式的值时,使用下列计算精度规则:
如果表达式中有双精度浮点数(double 型数据),则按双精度进行运算。例如,表达式 5.0/2 + 10 的结果是 12.5 是 double 型数据。
如果表达式中最高精度是单精度浮点数(float 型数据),则按单精度进行运算。例如,表达式 5.0F/2 + 10 的结果 12.5 是 float 型数据。
如果表达式中最高精度是 long 型整数,则按 long 精度进行计算。例如,表达式 12L + 100 + 'a' 的结果 209 是 long 型数据。
如果表达式中的最高精度低于 int 型整数,则按 int 精度进行运算。例如,表达式 (byte)10 + 'a' 和 5/2 的结果分别为 107 和 2,都是 int 型数据。
关系运算符与关系表达式

关系运算符是二目运算符,用来比较两个值得关系,关系运算符的结果是 boolean 型,当运算符对应的关系成立时,运算结果是 true,否则是 false。例如,10 < 9的结果是false,5 > 1的结果是 true,3!= 5的结果是 true,10 > 20 -17 的结果是 true(因为算术运算符的级别高于关系运算符,10 > 20 -17相当于 10 > (20 - 17),其结果是 true。

结果为数值型的变量或表达式可以通过关系运算符(如下表所示)形成关系表达式。例如,4 > 8、(x + y) > 80等。


             运   算   符            优   先   级            用          法            含义             组 合 方 向
                   >                     6              op1>op2              大于             从左到右
                   <                     6             op1<op2              小于            从左到右
                  >=                     6              op1 >= op2          大于等于             从左到右
                  <=                     6             op1 <= op2         小于等于             从左到右
                  ==                     7              op1 == op2              等于             从左到右
               !=                     7              op1 ! = op2          不等于             从左到右

逻辑运算符与逻辑表达式

逻辑运算符包括 &&、||、!。其中,&&、|| 为二目运算符,实现逻辑与、逻辑或运算;! 为单目运算符,实现逻辑非运算。逻辑运算符的操作元必须是 boolean 型数据,逻辑运算符可以用来连接关系表达式。下表给出了逻辑运算符的用法和含义。


            运算符            优先级             用   法          含   义             结合方向
                &&                   11          op1 && op2           逻辑与                 从左到右
               | |                   12          op1| |op2           逻辑或                 从左到右
                  !                  2                ! op           逻辑非                 从右到左

结果为 boolean 型的变量或表达式可以通过逻辑运算形成逻辑表达式。下表给出了逻辑运算符的用法和含义。


                op1                      op2                    op1 && op2                op1 || op2           ! op1
               true               true                   true                   true           false
               true               false                   false                   true           false
               false               true                   false                   true           true
               false               false                   false                   false           true

例如,2 > 8 && 9 > 2的结果为 false,2 > 8 || 9 > 2的结果为 true。由于关系运算符的级别高于 &&、|| 的级别,2 > 8 && 9 > 2 相当于 (2 > 8) && (9 > 2)。

逻辑运算符 && 和 || 也称为短路逻辑运算符,这是因为当 op1 的值是 false 时,&& 运算符在进行运算时不再去计算 op2 的值,直接得出 op1 && op2 的结果是 false;当 op1 的值是 true 时,|| 运算符在进行运算时不再去计算 op2 的值,直接得出 op1 || op2 的结果是 true。

赋值运算符与赋值表达式

赋值运算符“=”是二目运算符,左面的操作元必须是变量,不能是常量或表达式。设 x 是一个整型变量,y 是一个 boolean 型变量,x = 20 和 y = true 都是正确的赋值表达式,赋值运算符的优先级较低,是 14 级,结合方向为从右到左。

赋值表达式的值就是“=”左边变量的值,假如 a、b 是两个 int 型变量,那么表达式 b = 12 和 a = b = 100 的值分别是12 和 100。

注意,不要将赋值运算符“=”与等号关系运算符“==”混淆。例如,12 = 12 是非法的表达式,而表达式 12 == 12 的值是 true。

更多内容详见下一讲。

【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。


点我前往上一讲

点我前往下一讲

464318257 发表于 2017-1-23 12:06:19

{:10_265:}

零度非安全 发表于 2017-1-23 13:38:06

464318257 发表于 2017-1-23 12:06


共同学习,共同进步{:5_110:}

CarpLyy 发表于 2017-3-20 11:53:45

每次都可以解决之前的一些知识误区,赞

ShaunSS 发表于 2017-5-16 16:13:50

010 打卡

suiyisuixin2017 发表于 2018-4-15 21:08:50

谢谢讲解
页: [1]
查看完整版本: 【Java 教程(原创)】010.运算符与表达式(上)