二级JAVA第三章辅导:运算符和表达式
运算符表示对操作数执行的运算。根据操作数的多少,有一元(如+-)、二元运算符(如+、>)和三元运算符(如?:),分别对应一元运算符。它们可以有前缀表达式(比如++i)和后缀表达式(比如中缀表达式(比如a+b))。根据运算符的功能,基本运算符分为以下几类:
算术运算符(+、-、*、/、%、++、-)
关系运算符(>、=、< =、=、!=)
布尔逻辑运算符(!、&&、||)
按位运算符(> >、>、&、|、~)
赋值运算符(=,及其扩展赋值运算符如+=)
条件运算符(?:
其他(包括组件运算符、下标运算符[]、实例运算符instance of、内存分配运算符new、强制类型转换运算符(type)、方法调用运算符()等。)
本章主要讲前六类算子。
3.1算术运算符
算术运算符作用于整数或浮点数据来完成算术运算。
I .二进制算术运算符,如下表所示
运算符用法说明
+ op1+op2加
- op1-op2减
* op1*op2乘以
/ op1/op2除以
% op1%op2取模(求余数)
Java扩展了加法运算符来连接字符串,比如“abcde”,得到字符串“abcde”。我们将在第7章解释它。
与C和C++不同,模运算符%的操作数可以是浮点数,比如37.2%10=7.2。
二。一元算术运算符,如下表所示:
运算符描述
+ +op正值
-OP负值
+++OP,op++加1
-OP,op -减1
++和++i的区别:
++在使用I之后,I的值增加1,因此在执行i++之后,I。就是I,I的值就变成了i+1。
+i在使用I之前,I的值加1,所以执行++i之后,整个表达式和I的值都是i+1。
对,我-和-我一样。
例3.1。下面的示例说明了算术运算符的用法
public class ArithmaticOp {
public static void main(String args[]){
int a = 5+4;//a = 9
int b = a * 2;//b = 18
int c = b/4;//c = 4
int d = b-c;//d = 14
int e =-d;//e =-14
int f = e % 4;//f =-2
double g = 18.4;
double h = g % 4;//h = 2.4
int I = 3;
int j = i++;//i=4,j = 3
int k = ++ I;//i=5,k = 5
system . out . println(" a = "+a);
system . out . println(" b = "+b);
system . out . println(" c = "+c);
system . out . println(" d = "+d);
system . out . println(" e = "+e);
system . out . println(" f = "+f);
system . out . println(" g = "+g);
system . out . println(" h = "+h);
system . out . println(" I = "+I);
system . out . println(" j = "+j);
system . out . println(" k = "+k);
}
}
结果如下:
C:\>java算法
a = 9
b = 18
c = 4
d = 14
e =-14
f =-2
g = 18.4
h = 2.4
I = 5
j = 3
k = 5
3.2关系运算符
关系运算符用于比较两个值并返回布尔值true或false?关系运算符是二元运算符,如下表所示:
当运算符的用法返回true
> OP1 > op2OP1大于OP2
>+OP1 > = OP2OP1大于等于OP2
< OP1 < OP2OP1小于OP2
< = OP1 < = OP2OP1小于等于OP2
= op1!=op2 op1不等于op2
在Java中,可以传递任何数据类型(包括基本类型和组合类型)的数据= =或!=来比较它们是否相等(这个和C、C++不一样)。
运算结果返回true或false,而不是C或C++中的1或0。
关系运算符常与布尔逻辑运算符一起用作流控制语言的判断条件。诸如
如果(a>b&&b==c)
3.3布尔逻辑运算符
布尔逻辑运算符执行布尔逻辑运算,如下表所示:
op1 op2 op1&&op2 op1||op2!op1
假假假假假真
假真假真真真真
真假假真假真假
真真真真假
&&&,‖是实现逻辑与、逻辑或的二元运算符。
!是一元运算符,它实现逻辑否定。
对于布尔逻辑运算,先求运算符左边表达式的值。如果OR运算为真,则整个表达式的结果为真,所以不需要对运算符右侧的表达式进行运算。同样,对于AND运算,如果左表达式的值为false,则不必对右表达式求值,整个表达式的结果为false。
以下示例说明了关系运算符和布尔逻辑运算符的用法。
public class RelationAndConditionOp {
public static void main(string args[]){
int a = 25,b = 3;
布尔型d = a < b;//d = false
system . out . println(" a < b = "+d);
int e = 3;
如果(e!= 0 & & a/e > 5)
system . out . println(" a/e = "+a/e);
int f = 0;
if(f!= 0 & & a/f > 5)
system . out . println(" a/f = "+a/f);
else
system . out . println(" f = "+f);
}
}
运行结果如下:
C:\>java关系和条件Op
aa/e=8
f=0
注意:在上面的例子中,第二条if语句不会在运行时被0除而溢出,因为e!=0为假,所以不需要对A/E进行操作。
3.4位运算符
位运算符用于对二进制位进行运算。Java提供了以下比特运算符:比特运算符中,除了~,其他都是二元运算符。操作数只能是整数和字符数据。
3.4.1补充
Java补码用来表示二进制数。在补码表示中,位是符号?,正数的符号位是0,负数是1。补码的规定如下:
对于正数,该位为0,其余位代表值本身(二进制?),如+42的补码是00101010。
0条评论