数组: 一次性定义多个同类型的变量
数组空间在内存中必定是连续的
① 数组元素的默认值:
整数 数组元素默认值:0
浮点数 数组元素默认值:0.0
char 数组元素默认值:’\u0000’
boolean 类型数组默认值:false
对象类型 数组默认值 :null
数组的扩容:
数组长度是固定的,如果需要扩容,必须创建新数组.
原数组的元素要赋值到新数组
//数组扩容一
int[a] = {1,2,3,4};
int[b] = new int[a.length*2];
for(int i=0;i<a.length;i++){
b[i] = a[i];
}
a = b;
-------------------------------------
//数组扩容二
int[a] = {1,2,3,4};
int[b] = new int[a.length*2];
System.arraycopy(a,0,b,0,a.length);
a = b;
-------------------------------------
//数组扩容三
int[a] = {1,2,3,4};
a = java.util.Arrays.copyOf(a,a.length*2);
javascript
数组的内存结构:
数组变量中记录着数组的首地址.
通过 数组名[下标] 访问元素,进行相应的寻址计算
a[0] = a保存的数组首地址 + 下标 0*单位宽度
② 冒泡排序:
比较相邻的2个数字,如果左边比右边大,那么交换两个变量,继续比较下一对相邻的数字,经过一轮冒泡后,比较范围的最大值移动到整个范围的最后方.
经过多轮(a.length-1)冒泡之后,整个数组一定有序了.
for(int i = 1; i < a.length; i++){//控制执行a.length-1轮冒泡
for(int j = 0; j < a.length - i; j++){
if(a[j] > a[j+1]){
//a[j] <==> a[j+1];
int c = a[j];
a[j] = a[j+1];
a[j+1] = c;
}
}
}
③ 选择排序:
每一次都在选择范围内选择出最小值放置在范围内的第1个元素,多轮 (a.length-1)选择之后整个数组就有序了.
for(int i = 1; i < a.length; i++){//控制进行a.length-1轮选择
for(int j = i; j < a.length; j++){
if(a[i-1] > a[j]){
//a[i-1] <==> a[j];
int c = a[i-1];
a[i-1] = a[j];
a[j] = c;
}
}
}
④ 快速排序:
java.util.Arrays.sort(a)