Java编程基础(3)
1.3 Java中的运算符
在程序中经常出现一些特殊符号,如+、-、*、=、>等,这些特殊符号称为运算符。运算符用于对数据进行算数运算、赋值运算和比较运算等。在Java中,运算符可分为算术运算符、赋值运算符、比较运算符、逻辑运算符等。
1.3.1 算数运算符
在数学运算中最常见的就是加减乘除,这4种运算符称为四则运算。Java中的算术运算符就是用来处理四则运算的符号,算数运算符是最简单、最常用的运算符号。Java中的算数运算符及用法如下表所示
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b; | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(即算术中的求余数) | 7%5 | 2 |
++ | 自增(前) | a=2;b=++a; | a=3;b=3 |
++ | 自增(后) | a=2;b=a++; | a=3;b=2 |
- - | 自减(前) | a=2;b=- -a; | a=1;b=1 |
- - | 自减(后) | a=2;b=a- -; | a=1;b=2 |
算数运算符看上去比较简单,也很容易理解,但在实际使用时还有一些地方需要注意,具体如下。
(1)在进行自增(++)和自减(- -)运算时,如果运算符++或- -放在操作数的前面,则先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面,则先进行其他运算再进行自增或自减运算。
(2)在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。例如,2510/1000属于整数之间相除,会忽略小数部分,得到的结果是2,而2.5/10的结果为0.25.
(3)在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。例如,(-5)%3=-2,而5%(-3)=2.
1.3.2 赋值运算符
赋值运算符的作用就是将常量、变量或表达式的赋值给某一个变量。Java中的赋值运算符及用法如下表所示
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
– = | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2 |
在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。在赋值运算符的使用中,需要注意以下几个问题。
(1)在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
int x,y,z;
x = y = z = 5; //为3个变量同时赋值
在上述代码中,用一条赋值语句将变量x、y、z的同时赋值为5.需要注意的是,下面的这种写法在Java种事不可以的。
int x=y=z=5; //这样写是错误的
(2)在上表中,除了“=”,其他运算符都是特殊的赋值运算符,以“+=”为例,x+=3就相当于x=
x+3,表达式首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依次类推。
1.3.3 比较运算符
比较运算符用于对两个数值或变量进行比较,比较运算结果是一个布尔值,即true或false。Java中的比较运算符及用法如下表:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
需要注意的是,在比较运算中,不能将比较运算符“==”误写成赋值运算符“=”。
1.3.4 逻辑运算符
逻辑运算符用于对布尔类型的数据进行操作,其结果仍是一个布尔值。
Java中的逻辑运算符及用法如下表:
在使用逻辑运算符的过程中,需要注意一下几个细节。
(1)逻辑运算符可以对结果为布尔值的表达式进行运算。例如,x>3&&y!=0。
(2)运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数为true时,其结果才为true,否则结果为false。但运算符“&”和“&&”在使用上还有一定的区别。在使用“&”进行运算时,不论左边为true还是false,右边的额表达式都会进行运算。在使用“&&”进行运算时,若左边为false,右边的表达式就不再进行运算,因此“&&”称为短路与。
例:
public class Example{
public static void main(String[]args){
int x = 0;
int y = 0;
int z = 0;
boolean a, b;
a = x > 0 & y++ > 1;
System.out.println(a);
System.out.println("y = " + y);
b = x > 0 && z++ > 1;
System.out.println(b);
System.out.println("z = " + z);
}
}
(3)运算符“|”和“||”都表示或操作,当运算符两边的人一表达式值为true时,其结果为true。只有两边表达式的值都为false时,其结果才为false。同逻辑与操作类似,”||“运算符为短路或,当运算符”||“的左边为true时,右边的表达式不在进行运算,
具体示例如下:
int x = 0;
int y = 0;
boolean b = x==0 || y++>0
上面的代码块执行完毕后,b的值为true,y的值仍为0。原因是运算符”||“的左边表达式x==0结果为true,那么右边表达式将不进行运算,y的值不发生任何变化。
(4)运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边表达式的布尔值不同时,其结果为true。
1.3.5 运算符的优先级
在对一些比价复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种有顺序称为运算符的优先级。
Java中运算符的优先级如下表所示
优先级 | 运算符 |
---|---|
1 | . [] ( ) |
2 | ++ - - ~ ! (数据类型) |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < ><=>= |
7 | == != |
8 | & |
9 | ^ |
10 | l |
11 | && |
12 | ll |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= l= |
这次的学习就到这里了 。。。。下次,我们讲讲选择结构语句。
拜拜!