第3章 运算符、表达式和语句

算术运算符和算术表达式

1.加减运算符

运算符号分别为+和-,是双目运算符。加减运算的结合性是从左到右。加减运算的操作元是整型或浮点型数据,加减运算符的优先级是4级。

2.乘、除和求余运算符

运算符号为*、/、%,都是双目运算符。

*、/、% 运算符的结合性是从左到右,乘、除和求余运算的操作元是整型或浮点型数据。*、/、%运算符的优先级是3级

3.自增、自减运算符

运算符号为++、--,都是单目运算符,运算符可以放在操作元之前,也可以放在操作元之后,但操作元必须是一个整型或浮点型变量(不能是常量或表达式),运算符的优先级是2级。运算符的作用是使变量的值增1或减1,如:

  • ++x,--x表示在使用x之前,先使x的值加/减1。
  • x++,x--表示在使用x之后,使x的值加/减1

4.算术表达式

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

5.算术混合运算的精度

Java将按运算符两边的操作元的最高精度保留结果的精度,例如:5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。
char型数据和整型数据运算结果的精度是int。例如:byte k=18; 'H'+k的结果是int型,char ch=(char)('H'+k);

关系运算符和关系表达式

关系运算符用来比较两个值的关系,关系运算符的运算结果是boolean型数据,当运算符对应的关系成立时,运算结果是true,否则是false

1.大小关系运算符

  • 大小关系运算的符号分别是>、>=、<、<=,都是双目运算符,操作元是数值型的常量、变量或表达式。
  • 大小关系运算符的级别是6级。

2.等与不等关系

等与不等关系运算的符号分别是 "==""!=",都是双目运算符。运算符的级别是7级。

3.关系表达式

  • 结果为数值型的变量或表达式可以通过关系运算符形成关系表达式
  • 例如:(x+y+z)>30+x

逻辑运算符和逻辑表达式

逻辑运算用来实现boolean型数据的逻辑“与”、“或”和“非”运算,运算结果是boolean型数据。

1.逻辑“与”和逻辑“或”

运算的符号是"&&"、"||",是双目运算符,操作元是boolean型的变量或求值结果是boolean型数据的表达式。"&&""||"的级别分别是11和12级,结合性是左到右

  • "&&"的运算法则是:当两个操作元的值都是true时,运算结果是true,否则是false
  • "||"的运算法则是:当两个操作元的值都是flase时,运算结果是false,否则是true

短路逻辑运算符:逻辑运算符"&&""||"也称做短路逻辑运算符。

  • 进行op1&&op2运算时,如果op1的值是false,在运算时不再去计算op2的值,直接就得出op1&&op2的结果是false
  • 进行op1||op2运算时,当op1的值是true时,在运算时不再去计算op2的值,直接就得出op1||op2的结果是true

2.逻辑“非”

运算的符号是"!",是单目运算符,操作元在左面。当操作元的值是TURE时,运算结果是FALSE;反之为TURE"!"的运算级别是2级,结合性从右到左

3.逻辑表达式

结果为boolean型的变量或表达式可以通过逻辑运算符形成逻辑表达式。例如,24>18 && 4<0,x!=0 || y!=0

赋值运算符合赋值表达式

赋值运算符:=。赋值运算符是双目运算符,左面的操作元必须是变量,不能是常量或表达式。

x是一个整型变量,y是一个boolean型变量,x=120y=false都是正确的赋值表达式,赋值运算符的优先级较低,是14级,结合方向右到左 

移位运算符

位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。

1.左移位运算符

  • 左移位运算的符号为<<,是双目运算符。对于byteshort型数据,a<<n的运算结果是int型精度
  • a<<n运算:每左移一个位,左边的高阶位上的0或1被移出丢弃,并用0填充右边的低位
  • 因此,a每左移一次,相当于将a乘以2。

2.右移位运算符

  • 右移位运算的符号为">>",是双目运算符。对于byteshort型数据,a>>n的运算结果是int型精度
  • a>>n运算:每右移一个位,右边的低阶位被移出丢弃,并用0或1填充左边的高位,正数用0填充,负数时用1填充

位运算符

“按位与”运算符

  • "&"是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c
  • 运算法则是:如果a、b两个数据对应位都是1,则c的该位是1,否则是0。
  • 如果b的精度高于a,那么结果c的精度和b相同。

2.“按位或”运算符

  • "|"是双目运算符。对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。
  • 运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则是1。
  • 如果b的精度高于a,那么结果c的精度和b相同。

3.“按位非”运算符

  • "~"是单目运算符。对一个整型数据a按位进行运算,运算结果是一个整型数据c。
  • 运算法则是:如果a对应位是0,则c的该位是1,否则是0。 

4.“按位异或”运算符

  • "^"是双目运算符。对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。
  • 运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1。如果b的精度高于a,那么结果c的精度和b相同。

位运算符在操作逻辑型数据时,与逻辑运算符&&、||、!不同的是位运算要计算完a和b之后再给出运算的结果。

条件运算符

  • 条件运算符是一个3目运算符,需要连接3个操作元:
  • op1?op2:op3(要求第一个操作元op1的值必须是boolean型数据)
  • 运算法则是:当op1的值是true时,运算的结果是op2的值;当op1的值是false时,运算的结果是op3的值。

instanceof运算符

  • boolean result=obj instanceof Class
  • 该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。
  • 当左面的对象是右面的类创建的对象时,该运算的结果是true,否则是false

分支语句

1.条件分支语句

if-else语句

  • 由一个“if”、“else”和两个复合语句按一定格式构成。
  • 一条if-else语句的作用是根据不同的条件产生不同的操作,执行法则如下:
    • if后面()内的表达式的值必须是boolean型的。
    • 如果表达式的值为true,则执行紧跟着的复合语句;如果表达式的值为false,则执行else后面的复合语句。

多条件if-else if-else语句

2.switch语句


  • switch语句中表达式的值必须是整型或字符型;常量值1到常量值n必须也是整型或字符型。需要注意的是,在同一个switch语句中,case后的常量值必须互不相同。
  • switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,就执行该case里的若干个语句,直到碰到break语句为止
  • 若没有任何常量值与表达式的值相同,则执行default后面的若干个语句。其中default是可有可无的,如果它不存在,并且所有的常量值都和表达式的值不相同,那么switch语句就不会进行任何处理。

循环语句

1.while循环

while语句由关键字while、括号中的一个求值为boolean型数据的表达式和一个复合语句组成,其中的复合语句称作循环体。

while语句的执行规则是:

  1. 计算表达式的值,如果该值是true时,就进行2,否则进行3。
  2. 执行循环体,再进行1
  3. 结束while语句的执行

2.do-while循环

do{
   若干语句
}while(表达式);

do-while循环和while循环的区别:do-while的循环体至少被执行一次

3.for循环

for(表达式1;表达式2;表达式3)

{  若干语句
}

由关键字for、3个表达式,以及一个复合语句组成,其中的“表达式2”必须是一个求值为boolean型数据的表达式,而复合语句称作循环体。

  1. 计算“表达式1”,完成必要的初始化工作
  2. 判断“表达式2”的值,若“表达式2”的值为true, 则进行3,否则进行4。
  3. 执行循环体,然后计算“表达式3”,以便改变循环条件,进行2。
  4. 结束for语句的执行。

跳转语句

  • 在循环语句的循环体中使用跳转语句,用关键break;continue;加上分号构成的语句
  • 在一个循环中,比如循环50次的循环语句中,如果在某次循环体的执行中执行了break语句,那么整个循环语句就结束。
  • 如果在某次循环体的执行中执行了continue语句,那么本次循环就结束,即不再执行本次循环中循环体中continue语句后面的语句,而转入进行下一次循环。
越努力越幸运!
原文地址:https://www.cnblogs.com/Littlejiajia/p/13477170.html