第三章 java运算符和表达式

运算符和表达式

1.运算符

按运算符的操作数的数目划分:

  • (1)一元运算符:++,-一,+,-。
  • (2)二元运算符:+,-,>。
  • (3)三元运算符:?:。

按运算符的功能划分:

  • 算术运算符:+,-,*,%,++,–
  • 关系运算符:>,<,==,>=,<=,!=,
  • 布尔逻辑运算符:!,&&,II,
  • 位运算符:>>>,>>,<<,
  • 赋值运算符:+=,-=,*=,/=,例子:i+=3 等于:i+3=i;
  • 条件运算符:result=(sum==0 ? l : num/sum);
  • 其他运算符:下标运算符,分量运算符,实例运算符,内存分配运算符,强制类型转换运算符,方法调用运算符。

2.表达式

表达式是由操作数和运算符按一定的语法形式组成的符号序列。最简单的表达式是一个常量或一个变量,该表达式的值就是该常量或变量的值;表达式的值还可以作为其他运算的操作数,形成更复杂的表达式。
表达式的类型指的是表达式运算结束后的值的类型,由运算符以及参与运算的操作数的类型决定。例如x、y、z都是布尔型的变量,则x&&yl1z是布尔型表达式;如果numl、num2都是整型变量,则numl+num2是整型表达式。

算术运算符和算术表达式

一元算术运算符

二元算术运算符

在Java语言中,取模运算符%,其操作数可以为浮点数,如45.4%10=5.4

算术运算符的优先级

在稍微复杂一些的算术表达式中,算术运算符的优先级按下面次序排列:++和–的级别最高,然后是*和/以及%,而+和-的级别最低。此外,为了增强程序的可读性,通过括号可以明显地改变运算的顺序。

关系运算符和关系表达式

布尔逻辑运算符和布尔逻辑表达式

关系运算符和布尔逻辑运算符的优先级如下:!的优先级最高,其次为>,>=,<,<=,然后是==和!=,再然后是&&,最后是ll。和算术运算符一样,括号可以改变关系运算符和布尔逻辑运算符的运算顺序。

位运算符和位运算表达式


上图所示,位运算符中,除以外,其余均为二元运算符。为了叙述方便,把位运算符分成位逻辑运算符(包括、&、l和四种和移位运算符(包括>>、<<和>>>3种),下面分别加以说明。

位逻辑运算符

  • 1.按位取反运算符~
    ~是一元运算符,对数据的每个二进制位取反,即把1变为0;把0变为1。
    例如:10111010取反码后变为01000101、
  • 2.按位与运算符:
    两个操作数中,如果两个相应位都为1,则该位的结果为1,否则为0,即:0&0=0,0&1=0;1&0=0,1&1=1
  • 3.按位或运算符l两个操作数中,只要两个相应位中有一个为1,则该位的结果为1,否则为0,即:010=0,0i1=1,1l0=1,1l1=1
  • 4.按位异或运算符^
    两个操作数中,如果两个相应位相同,则结果为0,否则为1,即:
    00=0,10=1,01=1,11=0例如:01010100~00101110=01111010
  • 5.不同长度的数据进行位逻辑运算
    在进行位逻辑运算时,如果两个操作数的数据长度不同,如xly,x为long型,y为int型(或char型),则系统首先会将y的左侧32位(或48位)填满。若y为正数,则左侧填满0,若y为负数,则左侧添满l。这样,位逻辑运算表达式返回两个操作数中数据长度较长的数据类型。

移位运算符
1.算术右移运算符>>
2.算术左移运算符<<
3.逻辑右移运算符>>>

位运算符的优先级
在复杂一些的位运算表达式中,位运算符的优先级顺序排列如下:~的优先级最高,其次是
<<、>>和>>>,然后是&,再次是,最后是。当然,通过括号可以改变位运算符的优先顺序,

赋值运算符和赋值表达式

赋值运算符
扩展赋值运算符

条件运算符与条件表达式

条件运算符是三元运算符,用“?”和“:”表示。
三元条件表达式的一般形式为:
expressionl?expression2:expression3

其中表达式expressionl应该是关系或布尔逻辑表达式,其计算结果为布尔值。如果该值为true,则计算表达式expression2,并将计算结果作为整个条件表达式的结果;如果为false,则计算表达式expresion3,并将计算结果作为条件表达式的结果。

运算符的优先级和复杂表达式

在对一个复杂表达式进行运算时,要按运算符的优先顺序从高到低进行,同级的运算符则按照在表达式中出现的位置从左到右的方向进行。

表达式语句

在由++和–运算符形成的一元算术表达式和赋值表达式后加上分号可直接作为语句来使用,这种由表达式直接构成的语句叫做表达式语句。
例如:i++;–j;
其他可以直接构成表达式语句的表达式还有无返回值的方法调用。例如:
System.out.println(……);

完整的应用程序

【前方正在施工】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值