Java笔记(二)运算符——逻辑与逻辑或 / 按位与按位或 等(&& || 和 & |)

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 注释规范

  1. 内容准确:注释内容要和代码一致, 匹配, 并在代码修改时及时更新。
  2. 篇幅合理:注释既不应该太精简, 也不应该长篇大论。
  3. 使用中文:一般中国公司都要求使用中文写注释, 外企另当别论。
  4. 积极向上:注释中不要包含负能量。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值