3运算符,流程控制
1.1 关系运算符
-
<,> ,<=,>=,==,!=`
- 最后结果为布尔类型的值
- ==,!=可以比较基本类型和引用类型
- <>>=<=只能比较基本类型(布尔除外)
1.2 逻辑运算符
-
&,|,!,^,&&,||
- &和&&两边操作数都为true,其结果才为true。
- |和||两边操作数有一边为true,其结果为true。
- ^两边操作数相同为false,不同为true。
- !取反,true为false,false为true。
-
&和&&,|和||的区别
-
&&当左边第一个操作数为false的情况下不会对第二个操作数进行运算,因为结果为false
-
||当左边第一个操作数为true的情况下不会对第二个操作数进行运算,因为结果为true
-
1.3 位运算符
^、&、|、~、>>、<<、>>>,
位运算符就是基于二进制直接进行运算。
false->0;true->1
-
按位异或^
^ 1 0 1 0 1 0 1 0 -
两个相同的数字进行^运算,其结果就是0
-
0和任何数字进行^运算,结果就是对应数字
-
两个变量互相^三次,就可以互相交换位置。
-
-
按位&
按位& 1 0 1 1 0 0 0 0 -
二进制运算都是补码运算
-
运算时符号位也会参与运算
-
-
按位|
| 1 0 1 1 1 0 1 0 -
按位~
按位~ 1 0 0 1 System.out.("~5");//结果为-6
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AciWqScB-1569680165870)(C:\Users\燊\Desktop\新建文件夹\2019-09-28_201037.png)]
按位左移<<
System.out.println(-2<<3);//-16
System.out.println(2<<3);//16
-
一个数字左移N位,相当于当前这个数字*2N次方
-
移之后不论正负 ,都是通过0填充
按位右移>>
System.out.println(8>>2);//2
System.out.println(-8>>2);//-2
-
当一个数字右移n位之后,就是除以当前数字的除以2的n次方
-
填补空位通过当前数字的符号位填补
无符号按位右移>>>
-
当一个正数进行无符号右移操作时和右移操作的结果是一样的。
-
当一个负数进行无符号右移操作时得出的结果一定是一个正数。
-
无符号右移填补空位全部都是通过0填补。
1.3 条件运算符
表达式1?表达式2:表达式3;
-
表达式1 的结果一定是一个boolean类型的值
-
表达式1结果为true时,执行表达式2
-
表达式1结果为false时,执行表达式3
-
-
条件运算符是三目运算符
2. 流程控制结构
2.1 顺序结构
程序自上而下依次执行。编写学习的main方法就是一个典型的顺序结构 。
2.2选择结构
- 单分支结构
if
public class Damo03{
public static void main(String[] args){
//声明两个随机变量(范围1-10) 如果unm1>unm2打印两数
int unm1=(int)(Math.random()*11+1);
int unm2=(int)(Math.random()*11+1);
if(unm1>unm2){
System.out.println(unm1+"\n"+unm2);
}
}
- 先判定if中的表达式的值,如果表达式的值是true,则执行执行语句,整个if就执行结束了。