1 赋值运算符
是为一个变量进行赋值操作,也可以修改变量的值。
注意其和数学意义上的等于不同,它是一个动作,将右边的值赋给左边。
int a = 10;
a = 20;
2 算数运算符
2.1 + - * / %
即:+ - * / %
都与数学运算几乎一样,所以较为简单。其中最需要注意的是 “ % ”。
(1) -9 % 2
注意在对负数进行 % 操作时,以此题为例,其实是先计算9%2,然后再加上前面的符号。
(2) 针对小数
在C 中,%只能针对整数,不能针对小数
而Java中,%也能针对小数求余。
(3) 0 不能作为除数
int a = 1;
int b = 0;
System.out.println(a / b)
// 运行时会抛出异常
2.2 自增自减 运算符:++ - -
int a = 10;
int b = ++a; // b = 11,先加后赋值
int c = a++ // c = 10,先赋值后加
++a; //11
a++; //11 不取返回值,不影响结果
结论:
前置 ++和后置++的区别主要在于取表达式的返回值,如果不去返回值,那么两者一样,效果等价。
++a返回的是自增之后的结果
a++返回的是自增之前的结果
3 关系运算符
即:== != < > <= >=
int a = 10;
int b = 20;
System.out.println(a == b); // false
注意 :
关系运算符的表达式返回值都是 boolean 类型
4 逻辑运算符 && || !& |
只能针对 boolean类型 运算
逻辑与 && 并且,一假则假
逻辑或 || 或者,一真则真
逻辑非 !
(1) 逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean 。
短路求值
(2) && 和 || 短路求值
对于逻辑与运算来说,如果左侧的表达式为false,右侧表达式不再求值;
对于逻辑或运算来说,如果左侧的表达式为true,右侧表达式不再求值。
10 > 20 && 10 / 0 == 0; // 打印 false
10 < 20 || 10 / 0 == 0; // 打印 true
(3) ! 逻辑取反
针对boolean 来运算,true=>false,false=>true。
(4) & 和 | 逻辑与和逻辑或:
不能短路求值
10 > 20 & 10 / 0 == 0; // 抛出异常
5 位运算符 & | ~
只能针对 整型 运算
& 和 | 的有两副面孔 !!!
(1) & 和 | 按位与和按位或:
先把数据理解成二进制,然后针对二进制对应的bit 位进行运算。
int a = 10;
int b = 20;
System.out.println(a & b); //结果为0
System.out.println(a | b);
二进制表示a和b,如下:
a 01010
b 10100
对于按位与来说,只有两个数字都是1,结果才是1,否则就是0;
对于按位或来说,只有两个数字都是0,结果才是0,否则就是1。
(2) ~ 按位取反:
针对整数,写成二进制形式,然后 0=>1,1=>0。
(3) ^ 按位异或:
如果对应两个bit位,相同则是0,相异则是1.
a = 10 01010
b = 20 10100
a ^ 0 => a
a ^ b ^ b = > a
例:不使用临时变量交换两个代码
int a = 10; //01010
int b = 20; //10100
System.out.println(a+" "+b); // 10 20
a = a ^ b; //11110
b = a ^ b; //01010
a = a ^ b; //10100
System.out.println(a+" "+b); // 20 10
6 移位运算
左移:<<
算术右移:>>
逻辑右移:>>>
(1) << 左移
和 C 语言一样,最左位就被干掉了,最右侧补 0,左移1位相当于 * 2。
int a = 10;
a << 1; // a = 20
a << 2; // a = 40
(2) >> 算术右移
最右位的就不要了,最左侧补符号位,右移1位相当于 / 2
负数 / 2 = > 负数
(3)>>> 逻辑右移
最右位的不要了,最左侧补 0
7 条件运算符
cod ?exp1:exp2
条件若为true,整个表达式的返回值就是exp1 的值;
条件若为false,整个表达式的返回值就是exp2 的值.
此表达式优先级最低,例如:
int a = 10;
int b = 20;
int ret = a<b? a:b + 10;
//先计算b+10,应尽量避免这样的表达式,要多使用括号明确优先级
8 注释
8.1 基本规则
单行注释:// 注释内容(用的最多)
多行注释:/* 注释内容*/(不推荐)
文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),主要用于搭配一些自动生成的工具,自动生成文档,生成代码的文档信息
8.2 注释规范
- 内容准确:注释内容要和代码一致, 匹配, 并在代码修改时及时更新。
- 篇幅合理:注释既不应该太精简, 也不应该长篇大论。
- 使用中文:一般中国公司都要求使用中文写注释, 外企另当别论。
- 积极向上:注释中不要包含负能量。