位运算符
&、|、^、<<、>>
逻辑运算符针对 boolean 数据进行运算
位运算符针对数值进行运算
1、先将运算数据转为二进制
十进制转二进制
十进制转二进制:目标数除以 2,若能除尽,则该位记作 0,若除不尽,则该位记作 1,再对商继续除以二,以此类推,直到商为 0,将每一位的结果反序组合就是对应的二进制。
二进制转十进制
从目标数的最右侧算起,本位的数值乘以本位的权重(2 的第几位的位数减一次方),把乘积累加起来就是对应的十进制
10 -》1010
17 -》10001
2、再根据运算规则进行运算
A & B(按位与):每一位的数字一一对应,若都为 1,则该位记作 1,否则为 0.
A | B(按位或):每一位的数字一一对应,只要有 1 个为 1,则该位记作 1,否则为 0.
A ^ B(按位异或):每一位的数字一一对应,相同记作 0,不同记作 1.
A << B(左移):A 乘以 2 的 B 次方,2 << 3,16
A >> B(右移):A 除以 2 的 B 次方,2 >> 3,0
10 & 5 = 0
10:1010
5:101
1010
0101
10 | 5 = 1111
10 ^ 3 = 1001
10:1010
3:11
流程控制
循环
Java 中有多少种循环?4 种
for、while、do-while、foreach(增强型 for 循环)针对于集合进行遍历
循环四要素:
- 初始化循环变量
- 循环条件
- 循环体
- 更新循环变量
while、do-while、for 的区别
相同点:都遵循循环四要素
不同点:while 和 do-while 适用于循环次数不确定的场景,for 循环适用于循环次数确定的场景
while 和 for 先判断循环条件,再执行循环体,do-while 是先执行一次循环体,再进行循环条件的判断
双重循环
一维循环的循环体是另一个一维循环
打印 9*9 乘法表
1*1 = 1
1*2 = 2 2*2 = 4
1*3 = 3 2*3 = 6 3*3 = 9
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + i * j+"\t");
}
System.out.println();
}
}
}
终止循环
break 和 continue
break 表示跳出整个循环体,结束整个循环
continue 表示跳出本次循环,继续下一轮循环
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if(sum > 50) break;
sum += i;
}
System.out.println(sum);
}
}
数组
数组就是一种可以存放大量数据类型相同的变量的数据结构,一个变量可以存储多个数据
数组中的数据必须是同一种数据类型的,不同数据类型的数据不能存放到一个数组中
数组的基本要素
-
数组名称
-
数组元素
-
元素下标,从 0 开始
-
数据类型
数组下标为什么要从 0 开始?而不从 1 开始?
数组的内存都是连续的
0 1000
1 1004
2 1008
3 1012
n 1000 + n*4
下标从 1 开始,寻址公式为 1000 + (n-1)*4
下标从 0 开始,寻址公式为 1000 + n*4