还剩1页未读,继续阅读
文本内容:
运算符和表达式
2.3在程序中经常出现一些特殊符号,如+、-、*、/、=、>、=等,这些特殊符号称作运算符;运算符用于对数据进行算术运算、赋值和比较等操作.在Java中,运算符可分为算术运算符,赋值运算符、比较运算符,逻辑运算符和位运算符本节我们介绍这几种运算符以及运算符之间的优先级;在数学运算中最常见的就是加减乘除,被称作四则运算,Java中的算术运算符就是用来处理四则运算的符号,这是最简单、最常用的运算符号;如图所示;a=+3;结果就是a=3;a=3;b=-a;结果就是b=-3;a=4+3;结果就是a=7;a=4-3;结果就是a=l;a=4*3;结果就是a=12;a=5/3;除号代表求商;结果就是a=l;a=5%3;百分号代表求余数;结果就是a=2;a=2;b=++a;自增加在前,代表先自加,再赋值;运算的顺序是a=2;a++;b=a;运行结果a=2;b=3;a=2;b=a++;自增加在后,代表先赋值,再自加;运算的顺序是a=2;b=a;a++;运行结果:a=3;b=2;a=2;b=-a;自减少在前,代表先减少,再赋值;运算的顺序是a=2;a--;b=a;运行结果a=l;b=l;a=2;b=a--;自减少在后,代表先赋值,再减少;运算的顺序是a=2;b=a;a--;运行结果a=l;b=2;如图所示的代码块运行结果为:b=
4、c=5,具体分析如下在上述代码中,定义了3个int类型的变量a,b、c.其中a=2,b=3,当进行“a+b++“运算时;由于运算符++写在了变量b的后面,属于先运算再自增,因此变量b在参与加法运算时其值仍然为2,c的值应为
5.变量b在参与运算之后会进行自增,因此b的最终值为4;下面我们看一个案例inta=2;intb=3;intc=a+++++b;System.out.printlnc=+c;下列代码执行后,变量c的值为多少?c进行运算的时候,a++的值为2;++b的值为4,因此c为6下面我们再看一个案例例a=2;intb=3;intc=++a+-b;System.out.printlnc=+c;下列代码执行后,变量c的值为多少?c进行运算的时候,++a的值为3;的值为2,因此c为5如图所示的代码块运行结果为:c=400,具体分析如下在上述代码中,由于表达式的执行顺序是从左到右,所以先执行除法运算450/100,得到结果为4再乘以100,得到的结果自然就是400了赋值运算符的作用就是将常量,变量或表达式的值赋给某一个变量;如图所示为赋值运算符及其用法;在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变最a=4;b=3;结果就是a=4;b=3;a=4;b=3;a+=b;结果就是a=7;a=4;b=3;a-=b;结果就是a=l;a=4;b=3;a*=b;结果就是a=12;a=4;b=3;a/二b;结果就是a=l;a=5;b=3;a%=b;结果就是a=2;比较运算符用于对两个数值或变软进行比较,其结果是一个布尔值,即true或false;如图是比较运算符及其用法;5==3表达式结果是false;5!=3;表达式的结果为true;53;表达式结果是false;53;表达式的结果为true;5=3;表达式结果是false;5=3;表达式的结果为true;逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型如图是Java中的逻辑运算符及其用法;逻辑运算符可以针对■结果为布尔值的表达式进行运算;运算符:表示逻辑与操作,仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false;运算符I表示逻辑或操作,只要运算符两边的操作数有一个为true时,其结果为true;运算符两边的操作数都为false时,其结果为false运算符人表示逻辑异或操作,运算符两边的操作数相同时,其结果才为false,两边的操作数不相同时,结果为true;运算符表示短路与操作,仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false;运算符11表示短路或操作,只要运算符两边的操作数有一个为true时,其结果为true;运算符两边的操作数都为false时,其结果为false;算符!表示逻辑非操作,可以对当前的表达式的值取反;下面我们看一个逻辑运算符实例,如图所示;运算符利都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为rue,否则结果为false;当运算符利的右边为表达式时,两者在使用上还有一定的区别,在使用进行运算时,不论左边为true或者false,右边的表达式都会进行运算如果使用进行运算,当左边为false时,右边的表达式不会进行运算;在这个实例中,使用进行计算时,xl这个表达式不成立,右边表达式y++l不执行运算,因此最后的结果中y的值为1下面我们再看一个案例intx=l;inty=l;booleana,b;a=++x1y++1;下列代码执行后,变量a和y的值为多少?在这个实例中,使用进行计算时,++xl这个表达式x先加1变成2,++xl成立,右边表达式y++l执行运算,y++l表达式不成立,之后y才加1;因此y的值为2,a的值为false;下面我们再看一个案例intx=l;inty=l;booleana,b;a=++x1y++1;下列代码执行后,变量a和y的值为多少?在这个实例中,使用进行计算时,++xl这个表达式x先加1变成2,++xl成立,右边表达式y++l执行运算,y++l表达式不成立,之后y才加1;因此y的值为2,a的值为false;下面我们再看一个案例intx=l;inty=l;booleana,b;a=++x111y++1;在这个实例中,使用||进行计算时,++xl这个表达式x先加1变成2,++xl成立,右边表达式y++l不执行运算;因此y的值为1,a的值为ture;位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作Java中的位运算符及其范例如表所示运算符表示按位与操作,仅当运算符两边的操作数都为1时,其结果才为1,否则结果为0运算符I表示按位或操作,只要运算符两边的操作数有一个为1时,其结果为1;运算符两边的操作数都为0时,其结果为0;运算符A表示按位异或操作,运算符两边的操作数相同时,其结果为0,两边的操作数不相同时,结果为1;运算符~表示按位取反操作,运算符~操作数为0时,其结果为1,运算符~操作数为1时,其结果为0;运算符表示按位左移操作,左移操作将所有的位向左边移动;00000010左移2位变为00001000;相当于扩大了2的2次方;运算符表示按位右边操作,右移操作将所有的位向右边移动;00001000右移2位变为00000010相当于缩小了2的2次方;在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序我们把这种顺序称作运算符的优先级如图列出Java中运算符的优先级,数字越小优先级越高;单运算符的优先级高于二位运算符;赋值运算符的优先级最低;没有必要去记运算符的优先级编写程序时,尽量使用括号来实现想要的运算顺序,以免产生歧义;下面我们再看一个案例inta=2;intb=3;intc=a+++b;System.out.printlnc=+c;下列代码执行后,变量c的值为多少?c进行运算的时候,++优先级高于+;c=a+++b相当于a+++b;因此先计算a+b,c的值为5;这个案例中代码应该写为c=a+++b;这样代码清晰不会有歧义;本节首先介绍了Java的各种运算符;然后通过具体的实例讲述了Java的运算符的使用方法;最后介绍了Java的运算符优先级顺序;。