Java学习之运算符、表达式

来源:互联网 发布:淘宝上的gucci是真的吗 编辑:程序博客网 时间:2024/05/17 02:40

一、算术运算符和算术表达式

(1)加减运算符

加、减运算的运算符号分别为+和-,是双目运算符,即连接两个操作元的运算符。加、减运算的结合性是从左到右。例如,2+3-8,先计算2+3,再将得到的结果减8。加减运算的操作元时整型或浮点型数据,加减运算符的优先级是4。 

(2)乘、除和求余运算符

乘、除和求余运算的运算符号分别为*、/、%,是双目运算符。*、/、%运算符的结合性是从左到右。例如,2*3/8,先计算2*3,再将得到的结果除以8。操作元时整型或浮点型数据,优先级是3。

(3)自增、自减运算符

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

++x,--x表示在使用x之前,先将x的值加1或减1。

x++,x--表示在使用x之后,将x的值加1或减1。

(4)算术表达式

用算术符号和操作元连接起来的、符合Java语法规则的式子,称为算术表达式,如:

x+2*y-30+3*(y+5)-12+n+(--n)

(5)算术混合运算的精度

精度由低到高排列的顺序是:byte、short、int、long、float、double。Java将按运算符两边的操作元的最高精度保留结果的精度,如5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。

char类型数据和整型数据运算结果的精度是int。

二、关系运算符和关系表达式

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

(1)大小关系运算符

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

(2)等与不等

等与不等关系运算符的符号分别是==和!=,双目运算符,优先级7级。==和!=都是由2个字符组成的一个完整的符号,书写时不要有空格。

(3)关系表达式

结果为数值型的变量或表达式可通过关系运算符形成关系表达式。

三、逻辑运算符和逻辑表达式

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

(1)逻辑“与”和逻辑“或”

逻辑“与”和逻辑“或”运算的符号是&&和||,操作元是boolean类型的变量或求值结果是boolean类型的表达式。

&&的运算法则是:当两个操作元的值都是true时,运算结果是true,否则为false。

||的运算法则是:当两个操作元的值都是false时,运算结果是false,否则为true。

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

(2)逻辑“非”

逻辑“非”的符号为!,操作元在左。当操作元的值是true时,运算结果是false,反之为true。

(3)逻辑表达式

结果为boolean类型的变量或表达式可以通过逻辑运算符形成逻辑表达式。

四、赋值运算符和赋值表达式

赋值运算符“=”,左边的操作元必须是变量,不能使常量或表达式。赋值表达式的值就是“=”左边变量的值。

五、移位运算符

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

(1)左移位

左移位符号是<<,左移位运算符左边的操作元称为被移位数,右边的操作数称为移位量,操作元必须是整型类型的数据。

假设a是一个被移位的整型数据,n是位移量。a<<n运算的结果是通过将a的所有位都左移n位,每移一位,左边的高阶位上的0或1被移出,并用0填充右边的低位。

对于byte或short类型的数据,a<<n的运算结果是int类型。

(2)右移位

右移位运算符是>>。a>>n运算的结果是通过将a的所有位都右移n位,每移一位,右边的低位被移出,并用0或1填充左边的高位。

对于byte或short类型的数据,a>>n的运算结果是int类型。

六、位运算符

(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^a=0,0^a=a

位运算符也可以操作逻辑型数据,法则是:

当a、b都是true时,a&b是true,否则a&b是false;当a、b都是false时,a|b是false,否则是true;当a是true时,~a是false,当a时false时,~a是true。

七、条件运算符

条件运算符是一个三目运算符,符号是“?:”,需要连接3个操作元,用法如下:

op1?op2:op3

要求第一个操作元op1的值必须是boolean类型数据。运算法则是:当op1的值是true时,op1?op2:op3运算的结果是op2的值;当op1的值是false时,op1?op2:op3运算的结果是op3的值。

八、instanceof运算符

instanceof,左边的操作元是一个对象,右边是一个类。当左边的对象是右边的类创建的对象时,该运算的结果是true,否则是false。



0 0
原创粉丝点击