菜鸟Z学java的第三天

来源:互联网 发布:淘宝买家账号导出 编辑:程序博客网 时间:2024/05/29 01:52
基本逻辑运算符
与:  &
或:  |
非:  !
异或:  ^


短路与:  ||
短路或:  &&


结论:
& : 有false则false
| : 有true则true
^ : 相同为false,不同为true
! : 非false则true,非true则false
特点:偶数个不改变本身.




&与&&的区别?
最终结果都一样,但&&具有短路的效果,左边是false,右边不执行.


|与||的区别?
最终结果都一样,但||具有短路的效果,左边是true,右边不执行.






位运算符:


&:有0则0;
|:有1则1;
^:相同则0,不同则1;
~:按位取反.




例子说明:
&:  System.out.println(6 & 3);
换成二进制运算:
110
011
__________
010
则结果为2




------------------------------------------
位异或运算符特点:
^的特点:一个数据对另一个数据位异或两次,该数本身不变.




面试题:交换两个变量的值,不需要第三方变量?
答案:
//不需要第三方变量(有弊端,可能超过int的取值范围)
int x=10;
int y=5;
x=x+y;
y=x-y;
x=x-y;
System.out.println(x);
System.out.println(y);



//精良版
int x=10;
int y=5;
x=x^y;
y=x^y;
x=x^y;
System.out.println(x);
System.out.println(y);


---------------------------------------------------


<<:左移  左边最高位丢弃,右边补齐0  (向左移动几位就是乘以2的几次幂)
12<<1    24
12<<2    48 


>>:右移  最高位是0,左边补齐0;最高位是1,左边补齐1  (向右移动几位就是除以2的几次幂)
12>>1    6
12>>2 3


>>>:无符号右移  无论最高位是1还是0,左边补齐0




最有效率的算出2*8的结果
System.out.println(2<<3);




-------------------------------------------------
接下来说一下为啥要使用键盘录入数据?
第一,是为了让程序的数据更符合开发的数据
其次,为了让程序更加灵活




--------------------------------------------------
注意:
int x=10;  这是两句话,int x声明是一句,x=10 赋值是一句.




--------------------------------------------------
if和三元运算符的区别:
三元运算符实现的,都可以用if实现,反之不成立.


什么时候if语句实现不能用三元改进?
当if语句控制的操作是一个输出语句的时候就不能;
为啥呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,
而不是一个输出.


---------------------------------------------------
switch里面的的表达式:
基本数据类型可以接受byte,short,char,int;
引用数据类型可以接收枚举(JDK1.5) String字符串(JDK1.7)


注意:default可以放在任意位置,但即使这样也是最后执行


switch语句结束条件:
遇到break就结束;
执行到switch的右大括号就结束.


------------------------------------------------------
if与switch各自使用场景
switch建议判断固定值的时候用;
if建议判断区间或范围的时候使用