运算符
算数运算符
算数运算符中的+、-、*、/、%属于二元运算符,二元运算符指的是需要两个操作数才能完成运算的运算符。
二元运算符的运算规则如下:
整数运算:
- 如果两个操作数有一个为long,则结果也为long。
- 没有long时,结果为int。即使操作数全为short、byte,结果也为int。
浮点运算:
- 如果两个操作数有一个为double,则结果为double。
- 只有两个操作数都是float时,结果才为float。
取模运算:
- 其操作数可以为浮点数,一般使用整数,结果是“余数”。“余数”符号和左边操作数相同,如7%3=1,-7%3=-1,7%-3=1。
算数运算符中的++(自增)、–(自减)、属于一元运算符,只要一个操作数。
操作自己|影响自己:
- ++放在操作数的前面还是后面,都是自身+1
- –放在操作数的前面还是后面,都是自身-1
int a=3;
int b=4;
a++;
a--;
System.out.println(a);//a=3 这里只影响自己
操作别人|影响别人(操作数的值是多少影响其他的结果)|参与运算符:
-
++|-- 放在操作数的前面,先自身+1|-1,再去参与运算
-
++|-- 放在操作数的后面,先去参与运算,再自身+1|-1
int a=3;
int b=++a;
System.out.println(b);//b=4
现在我们再来看一段难一点的代码:
int k=20;
int j=8;
int totle = k++ + j-- + --j + ++k + k++ + j++ + k-- + --k + j++;
System.out.println("k="+k+",j="+j+",totle="+totle);
//这里k=21,j=8,totle=135 ;
赋值及其扩展赋值运算符
赋值就是将一个具体的值赋予一个变量。
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
int a=3;
int b=4;
a+=b; //相当于a=a+b;
System.out.println("a="+a); //7
a=3;
a*=b+3; //相当于a=a*(b+3)
System.out.println("a="+a);//21
关系运算符
关系运算符用来比较运算
运算符 | 含义 | 示例 |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a< b |
<= | 小于等于 | a<=b |
>= | 大于等于 | a>=b |
逻辑运算符
逻辑运算的操作数和运算结果都是布尔值。
逻辑与:&,两个操作数为true,结果才为true,否则为false;
逻辑或:|,两个操作数有一个是true,结果就为true;
短路与:&&,当左边的操作数为false时,整个结果为false,不会去运算右边
短路或:||,当左边的操作数为true时整个结果为true,不会去运算右边的操作数
逻辑非:!,取反,即!false为true,!true为false
逻辑异或:^,相同时为false,不同时为true;
//1>2的结果为false,那么整个表达式的结果为false,不会再去计算2>(3/0);
boolean c=1>2 && 2>(3/0);
System.out.println(c);
//如果是逻辑与:&;当计算左边的操作数为false时,还会去计算右边的操作数,这时就会报出异常。
boolean d=1>2 & 2>(3/0);
System.out.println(d);
位运算符
位运算符指的是进行二进制位的运算
~:取反
&:按位与
|:按位或
^:按位异或
<<:左移运算符,左移一位相当于乘2
.>>:右移运算符,右移一位相当于除2
int a=8<<2;//相当于:8*2*2
int b=8>>3;//相当于:8/2/2/2
条件运算符
条件运算符的语法格式为:
条件表达式? 值1 : 值2
其中,条件表达式为boolean类型表达式,如果运算的结果为true时,则整个运算的结果为值1,否则为值2。
//2.判断一个数是否为奇数
int num=45;
System.out.println(num%2==0?"奇数":"偶数");
运算符的优先级
单目算数位关系,逻辑三目后赋值