数组:一组类型相同 而且存储空间连续的数据
1:如何定义数组 -》 引用数据类型
Student stu = new Student();
int[] data1 = new int[3];//3表示底层开辟3块连续的存储空间
int[] data2 = new int[]{345,67,78,89};
int[] data3 = {45,67,8,7,4,9};
2:如何得到数组里面的某一个元素
数组对象[下标];
System.out.println(data3[5]);
[x]什么情况下表示开辟的空间数?
什么情况下表示下标?
看[]前面是什么
[]前面是数据类型 -》 x表示底层开辟的空间大小
[]前面是数组对象 -》 x表示下标
char[] data = new char[3];//空间大小
data[2];//下标
3:如何得到数组的大小
数组对象.length
System.out.println(data2.length);
4:如何遍历数组
遍历:从头到尾看一遍
A.for + 下标
for(int x = 0;x < data.length;x++){//x控制的是下标
System.out.println(data[x]);
}
B. foreach forin since jdk5.0
for(数据类型 元素 : 数组对象){
System.out.println(元素);
}
for(int x : data3){//x表示任意一个元素
System.out.println(x);
}
数组的复制
1:直接将数组的引用进行赋值 -》 没有完成需求的
只是这个数组对象多个引用而已
2:笨重的复制方式 需要挨个进行赋值
3:直接调用“克隆”方法 不符合正常的需求
========================================
4:System.arraycopy(1,2,3,4,5);
1: 要复制的原数组
2:元素组的起始下标位置
3:要复制到的目标数组
4:目标数组的起始下标位置
5:要复制的长度
*:当我们学到ArrayList集合的时候
对于ArrayList里面的删除元素的方法 其实底层就是用数组复制实现的
*:arraycopy方法的1 3参数其实可以是同一个数组对象 从而实现数组的前后移动
数组的排序:
int[] data = new int[]{23,17,11,68,45};
手动排序 冒泡排序:
23 17 11 68 45
[0] [1] [2] [3] [4]
[0] vs [1] 前大后小 需要交换
17 23 11 68 45
[0] [1] [2] [3] [4]
[1] vs [2] 前大后小 需要交换
17 11 23 68 45
[0] [1] [2] [3] [4]
[2] vs [3] 前小后大 不需要交换
17 11 23 68 45
[0] [1] [2] [3] [4]
[3] vs [4] 前大后小 需要交换
[y] vs [y+1]
17 11 23 45 68
[0] [1] [2] [3] [4]
for(int x = 0; x < data.length -1;x++){
for(int y = 0; y < data.length - 1-x;y++){
//比较y对应的元素和y+1对应的元素大小
if(data[y] > data[y+1]){
//交换两个变量
data[y] = data[y] ^ data[y+1];
data[y + 1] = data[y] ^ data[y+1];
data[y] = data[y] ^ data[y+1];
}
}
}
int x = 45;
int y = 78;
int z = x;
x = y;
y = z;
x = x + y;
y = x - y;
x = x - y;
x = x ^ y;
y = x ^ y;
x = x ^ y;
自动排序:
import java.util.*;
Arrays.sort(数组对象);//只会从小到大进行排序