知识点:
-
位运算
- &:按位与,两个数都是1,结果才是1.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TeUj6vnc-1600866384176)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922220220734.png)]
-
|:按位或,两个操作数一个是1,结果就是1.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBO8Co54-1600866384178)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922220419606.png)]
-
^ : 按位异或,两个 操作数相同,结果为0;两个 操作数不同,结果为1;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-urSPi6K1-1600866384179)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922220600250.png)]
-
<<:左移,右侧空位补0,高位移出
-
正数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgDSGDkI-1600866384181)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922220808411.png)]
-
负数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyVKS6vg-1600866384182)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922220940857.png)]
注意:左移操作,在不越界的情况下,x << n等同于 x 乘以 2 的 n 次幂
-
-
:右移,左侧空位补最高位,即符号位。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kfl9wwBI-1600866384183)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922221422049.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iB5bryqv-1600866384184)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922221422043.png)]注意:右移操作,在不越界的情况下, x >> n 等同于 x 除以 2 的 n 次幂
-
:无符号位移,高位补0
-
三目运算符: ‘条件’ ?‘表达式1’ : ‘表达式2’;条件为true时运行表达式1,条件为false时运行表达式2.
条件 的结果是布尔类型,只能是 true or false
如果 条件 的结果是 true 则返回 表达式1
如果 条件 的结果是 false 则返回 表达式2 -
三大流程控制:顺序结构,选择结构,循环结构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9GWeX56-1600866384184)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200922222628860.png)]
-
Scanner
创建 Scanner 对象,用于获取控制台输入的流
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
hasNext() 判断还有没有输入的值,如果有返回 true
```java
boolean hasNext = input.hasNext();
if (hasNext) {
// next() 获取输入到的信息,空格和回车会中断获取
// String next = input.next();
// nextBoolean() 将获取到的信息,转换成 boolean 类型
// boolean b = input.nextBoolean();
//nextInt()将获取到的信息,装换为int型(nextFloat同样)
// int b = input.nextInt();
//获取当前行的输入
String next = input.nextLine();
System.out.println("你输入的是:" + next);
}
close 为关闭Scanner对象
input.close();
-
单分支
如果if 里的代码只有一句,可以不写{},但是不推荐这么写
-
双分支
如果条件为true,执行 代码块1,否则执行 代码块2 if (条件){ // 代码块 1 } else{ // 代码块 2 }
Scanner input = new Scanner(System.in); System.out.println("你要找的对象性别:1. 男性; 2. 女性"); int gender = input.nextInt(); if (gender == 1) { System.out.println("你是个女生!"); } else { System.out.println("你是个爷们儿!"); }
-
switch
switch(表达式){ case 表达式1: // 代码1 break; case 表达式2: // 代码2 break; ... default: // default代码 break; }
-
while
计算1~100的和
int sum = 0; int num = 1; while(num < 101) { sum += num++; } System.out.println("1 ~ 100 的和是:" + sum);
while条件为true是运行,equals:循环输入,直到输入’ f '为止
Scanner input = new Scanner(System.in); System.out.println("输入一个字符串:"); String str = ""; boolean flag = true; while(flag) { String next = input.next(); if ("f".equals(next)) { flag = false; }else { str += next; } } System.out.println(str);
-
do-while:
先执行循环体,在判断执行条件。至少执行一次,
计算1~100
int sum = 0; int num = 1; do { sum += num; num ++; }while(num <= 100); System.out.println(sum);
-
for: for(表达式1; 表达式2; 表达式3){ // 循环体 }
-
**1.**先执行表达式1 2. 执行表达式2,表达式2结果是一个boolean类型的 3. 如果表达式2结果是true 执行循环体 4. 如果表达式2,结果是false 循环结束 5. 循环体执行完毕后,执行表达式3 6. 表达式3 执行完,执行第2步。
-
表达式1 只执行一次,所以一般用来初始化数据 表达式2 是循环条件 表达式3 一般是修改循环变量
计算1~100
int sum = 0; int num = 1; for (;num < 10;num++) sum += num; System.out.println(sum);
-
-
跳出循环的三种方式
-
循环嵌套:循环之间可以相互嵌套
循环嵌套的时候可以给循环命名命名之后可以通过控制语句,如 continue、break来控制循环跳出操作
方法如下:
outer: for(){ inner: for(){ continue outer; break outer; } }
continue [循环名称];
循环名称不写,默认是当前循环,如果写上循环名称,表示操作指定循环名称循环
eg: continue outer; 表示结束 outer 的本次循环
称不写,默认是当前循环,如果写上循环名称,表示操作指定循环名称循环
eg: continue outer; 表示结束 outer 的本次循环