一、位运算
位运算符:按位运算 & | ^
```java
//声明变量测试
int a=1,b=2;
/*
二进制的表示:
00000001
00000010
同时为真才为真(两对二进制上下对应)
00000000
*/
System.out.println(a & b);//0
//改变数值进行测试
a=5;//101
b=7;//111
/*
二进制的表示:
00000101
00000111
同时为真才为真(两对二进制上下对应)
00000101
*/
System.out.println(a & b);//5
//自行测试 | ^
```
**位移运算符,算法中用的多**
位移时,是有规律的变化数据(一般人掌握不了)
```java
//位移运算符 >>
a=5;//101
/*
二进制的表示:
00000101
->向右移动
00000010
*/
System.out.println(a>>1);//2
a=5;//101
/*
二进制的表示:
00000101
->向右移动
00000001
*/
System.out.println(a>>2);//1
```
# 二、数组
数组就是一组数据(对应变量,数据是可以存储多个数据的容器)
后续的集合框架,底层就是数组
数组元素长度属性:length
数组每个元素都有下标:从0开始,到 length-1
```java
int[] arr = {1,2,3};
```
创建数组常用的两种方式
```java
//方式一
int[] arr = new int[5];
//方式二
int[] arr = {1,2,3};
//方式三
int[] arr;
arr = new int[]{1,2,3};
```
数组的使用
```java
//给数组元素赋值:
// 数组[下标] = 值;
arr[0] = 1;
//获取数组的元素值:
// 数据类型 变量 = 数组[下标];
int n = arr[0];
```
数组创建后对应数据类型有默认值
```java
int[]arr1 = new int[5];
System.out.println(arr1[0]);//缺省值:0
double[]arr2 = new double[5];
System.out.println(arr2[0]);//缺省值:0.0
String[]arr3 = new String[5];
System.out.println(arr3[0]);//缺省值:null
```
遍历数组
```java
int[] arr = {1,3,5,2,4,6};
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\n");
}
```
数组排序