所有的程序开发都是一种数字的处理游戏,那么对于数字的处理一定会有所谓的操作模式,而这些操作模式就称为运算符。
数学运算符
在数学计算里面最头疼的就是“++”、"--",因为这两种运算符有两种使用方式:
1. ++变量、--变量:先进行变量的自增或者自减,而后再进行数字的计算;
2. 变量++、变量--:先使用变量进行计算,而后再进行自增或自减。
举例:实现自增与自减
public static void main(String[] args) {
int x = 10;
int y = 20;
//1、++x:首先x的内容要先自增1,为11
//2、y--:先进行计算,使用的内容是20,计算完成后自减
int result = ++x - y--;
System.out.println("计算结果:" + result);//计算结果:-9
System.out.println("x=" + x);//x=11
System.out.println("y=" + y);//y=19
}
这些代码程序都是在当初内存量不大的情况下提供的处理方式,但是现在来看,这种计算就变得非常的繁琐了,尤其是在硬件成本降低的今天,这类操作如果不是必须的情况下不建议这样使用。
举例:优化代码
public static void main(String[] args) {
int x = 10;
int y = 20;
//1、++x:首先x的内容要先自增1,为11
//2、y--:先进行计算,使用的内容是20,计算完成后自减
++x;
int result = x - y;
y--;
System.out.println("计算结果:" + result);//计算结果:-9
System.out.println("x=" + x);//x=11
System.out.println("y=" + y);//y=19
}
关系运算符
- 关系运算的主要特征就是进行大小的比较处理,包括:大于(>)、小于(<)、大于等于(>=)、小于等于(<=>)、不等(!=)、相等(==)。所有的关系运算返回的判断结果都是布尔类型的数据。
- 在关系判断的时候特别需要注意的就是相等的判断问题。在 Java 里面 “=” 表示的赋值运算、而内容相同的比较是"=="。
- 数据类型之间提供有转型支持,所以在进行判断的时候字符会自动转为 int 而后进行数字的比较。
三目(赋值)运算符
在进行程序开发的时候三目运算符使用的非常多,而且合理的利用三目运算可以避免一些大范围的程序编写。三目是一种所谓的赋值运算处理。它是需要设置一个逻辑关系的判断之后才可以进行的赋值操作,基本语法如下:
关系运算?关系满足时的内容:关系不满足时的内容。
举例:判断两个数字大小,将最大值保存
public static void main(String[] args) {
int x = 10;
int y = 20;
// 判断x与y的大小关系来决定最终 max 变量的内容
int max = x > y ? x : y;
System.out.println(max); //20
}
位运算符
位运算指的是可以直接进行二进制数据的计算处理,主要有:与(&)、或(|)、异或(^)、反码(~)、移位处理
如果要想理解位操作,则一定要清除十进制与二进制之间的转换处理逻辑:数字除2取余
举例:观察与(&)操作,如果两位都是1结果才是1,有1位是0结果就是0
public static void main(String[] args) {
int x = 13; //13 的二进制:00000000 00000000 00000000 00001101
int y = 7; //7 的二进制:00000000 00000000 00000000 00000111
System.out.println(x & y); //&计算:00000000 00000000 00000000 00000101 ->5
}
举例:观察或(|)操作,如果两位都是0结果才是0,有1位是1结果就是1
public static void main(String[] args) {
int x = 13; //13 的二进制:00000000 00000000 00000000 00001101
int y = 7; //7 的二进制:00000000 00000000 00000000 00000111
System.out.println(x | y); //&计算:00000000 00000000 00000000 00001111 ->15
}
举例:观察异或(^)操作,相同为1,不同为0
public static void main(String[] args) {
int x = 13; //13 的二进制:00000000 00000000 00000000 00001101
int y = 7; //7 的二进制:00000000 00000000 00000000 00000111
System.out.println(x ^ y); //&计算:00000000 00000000 00000000 00001010 ->10
}
举例:观察移位处理
public static void main(String[] args) {
int y = 7; //7 的二进制:00000000 00000000 00000000 00000111
System.out.println(y <<1); //&计算:00000000 00000000 00000000 00001110 ->14
System.out.println(y >>1); //&计算:00000000 00000000 00000000 000000011 ->3
}
面试题:请解释 & 和 && 、| 和 || 的区别?
- & 和| 两个运算符可以进行位运算与逻辑运算;
- & 和| 在进行逻辑运算的时候所有的判断条件都要执行,在进行位运算的时候只是针对于当前的数据进行与和或处理;
- 在逻辑运算上还可以使用 && 和 ||。&& 在若干个条件判断的时候,如果前面的条件返回了 false,后续所有的条件都不再判断,最终的结果为 false;|| 在若干个条件判断的时候,如果前面的条件返回了 true,后续所有的条件都不再判断,最终的结果为 true。