运算符:
1.算数运算符:
求和 | + |
相减 | - |
乘积 | * |
商 | / |
求余 | % |
自加 | ++ |
自减 | -- |
一个表达式有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。
public class Operator
{
public static void main(String[] args){
int i=10;
int j=3;
System.out.println(i+j);
System.out.println(i-j);
System.out.println(i*j);
System.out.println(i/j);
System.out.println(i%j);
}
}
自加自减:
++运算符可与出现再变量后面【单目运算符】;
如:
int k;
k++;
public class Operator
{
public static void main(String[] args){
int i=10;
int j=3;
System.out.println(i+j);
System.out.println(i-j);
System.out.println(i*j);
System.out.println(i/j);
System.out.println(i%j);
int k=10;
k++;
System.out.println(k);
++k;
System.out.println(k);
}
}
结果k为11和12;
结论:
++运算符可以出现在变量前,也可以出现在变量后,无论是变量前还是变量后,只要++运算符结束,该变量自动加一。
public class Operator
{
public static void main(String[] args){
int i=10;
int j=3;
System.out.println(i+j);
System.out.println(i-j);
System.out.println(i*j);
System.out.println(i/j);
System.out.println(i%j);
int k=10;
k++;
System.out.println(k);
++k;
System.out.println(k);
int a=100;
int b= a++;
System.out.println(a);
System.out.println(b);
int c=20;
int d=++ c;
System.out.println(c);
System.out.println(d);
}
}
结果:
a为101;
b为100;
c为21;
d为21.
++在前先自加一再赋值,
在后先赋值后加一。
2.关系运算符
> 大于 <小于 <=小于等于 >=大于等于 !=不等于 ==等于
public class Operator01
{
public static void main(String[] args){
int a=10;
int b=10;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a<=b);
System.out.println(a>=b);
System.out.println(a==b);
}
}
结果:
false
false
true
true
true
关系运算符表示的是变量保存的值的比较。
3.逻辑运算符:
& 逻辑与:两边算子都是真结果为真
| 逻辑或:两边算子都是假结果为假
! 逻辑非:取反,!false就是true反之亦然
^ 逻辑异或:两边算子结果不一样结果为true
&& 短路与
|| 短路或
1.逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。
2.短路与和逻辑与最终的运算结果相同,只不过短路与存在短路现象。
3.选择短路和逻辑:
public class Operator02
{
public static void main(String[] args){
System.out.println(5>3&5>2);
System.out.println(5>3&5>6);
System.out.println(5>3|5>6);
System.out.println(true&true);
System.out.println(true&false);
System.out.println(false&false);
System.out.println(true|true);
System.out.println(true|false);
System.out.println(false|false);
System.out.println(!false);
System.out.println(!true);
System.out.println(true^true);
System.out.println(true^false);
System.out.println(false^false);
int x=10;
int y=12;
//逻辑与
System.out.println(x<y& ++x<y);
System.out.println(x);//11
//后面表达式有运算
System.out.println(x<y&&++x<y);
System.out.println(x);//11
//后面表达式没有运算
}
}
从某个角度,短路与更智能,执行效率高,实际开发中使用较多。
但是再某些特殊情况下,表达式必须执行时候,应用逻辑与。