运算符、表达式、流程控制Java运算符算术运算符+-*/%++--赋值运算符=+=-=*=/=%=关系运算符====!=逻辑运算符&|!^&&||位运算符三目运算符intc=ab?a:b;表达式运算符(示例4-1/4-2)1、赋值运算符=+=*=%=递增/递减运算符对于需要对操作数进行加1或减1操作时,可以使用递增或递减运算符递增:++递减:--intabc=100;abc+=150;---------abc=abc+150;abc-=80;----------abc=abc-xy;关系和布尔运算符(示例4-3)Java使用==号来判断两个值是否相等,而用!=来判断是否不等,用、来判断大于、小于而用=、=来判断大于等于小于等于逻辑运算符功能!--逻辑非&--逻辑与(有假即假)|--逻辑或(有真即真)^--逻辑异或&&--短路与||--短路或关系和布尔运算符(con.)ab!aa&ba|ba^ba&&ba||btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse三目条件运算符“三目条件运算符,语法格式:x?y:z其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。移位运算符:右移运算符,将左操作数向右移动,移位个数由右操作数决定1002=25:左移运算符,将左操作数向左移动,移位个数由右操作数决定1004=160023=16:无符号左移位运算符赋值运算符(示例4-4)赋值运算符“=”是最常用的一种运算符。它将等于号右边的表达式的值赋给左边的变量。可以将其它的运算符和赋值运算符结合起来,作为“扩展”的赋值运算符:+=,-=,*=,/=,%=,^=,&=,|=,=,=,=赋值运算符(con.)当一个表达式中含有不同类型的数据时,需要用到类型转换。类型转换存在两种不同的方式:隐式转换强制转换类型转换(con.)(示例4-5)隐式类型转换:见下图。在这个图中,黑色的实线表示在进行转换的时候,不会损失信息,而红色的虚线表示在转换时可能会引起信息的损失。如果变量的长度不小于表达式的长度,则可进行赋值,称表达式是赋值兼容的。byteshortcharintlongfloatdouble类型转换(con.)强制类型转换(Cast,造型):强制类型转换,或者称为造型,用于显式的转换一个表达式的类型。简单数据类型可以被进行强制类型转换。例如,将一个double类型的数据强制转换成int类型。利用运算符“(type)var”进行强制类型转换,运算符“()”中的type表示将值var转换成的数据类型。除了简单类型外,引用类型也可以进行强制类型转换。作为字符串连接符的“+”运算符“+”除了用于数值类型的加法运算法,在字符串类型(String)数据中,它还是一个用于连接字符串的特殊的运算符。当“+”用在表达式中的时候,如果其中有一个操作数是字符串类型(String),则Java会自动将另一个操作数也转换成字符串,然后将这两个字符串相连起来生成一个新的字符串。表达式表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。一些表达式的例子:XX+10Y=x+10Arr[10]student.geName()表达式中运算符的结合性所有的数学运算都认为是从左到右结合的,在Java中,大部分运算也是从左到右结合的,只有单目运算符、赋值运算符和条件运算符例外乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作符可以互换位置而不会影响到结果表达式中运算符的优先顺序下面的表格说明了各个运算符的优先顺序,优先级高的运算符放置在表的上部,而在同一行的运算符拥有同样的优先顺序。除了单目运算符、赋值运算符以及条件运算符,其它的运算符都是从左到右结合的。运算符优先级运算符说明Java运算符分割符.[](),;单目运算符+-~!++expr--expr创建或类型转换New(type)expr乘法/除法*/%加法/减法+-移位关系==instanceof运算符优先级(con.)运算符说明Java运算符等价==!=按位与&按位异或^按位或|条件与&&条件或||条件?:赋值=