数组的定义和创建
数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理
例如:
数组元素:数组中的每一个数据,称为数组的一个元素(element)
数组中的元素可以是任何数据类型,包括基本数据类型和引用类型
数组中元素的个数,称为数组的长度(length)
JAVA语言中声明数组时不能指定其长度
例如:
int a[5]; //非法
int a[]; //合法
int[] a; //合法
数组的声明:
数组类型 数组名 [ ] 或 数组类型[ ] 数组名
int a[ ] ;
int[ ] b ;
double d[ ] ;
char[ ] ch ;
String stu[ ] ;
指定数组长度:
数组名 = new 数据元素类型[ 元素个数 ]
数组长度一经定义,固定不变。
int a[ ] ;
a = new int[5];
或
int a[ ] = new int[5];
数组的内存模型
-数组是存储多个相同类型变量的对象。数组的-所有元素保存在堆内存中。
-创建一个数组就是在堆中创建一个数组对象。
-数组创建后立即拥有默认值。
-索引从0开始。
-连续分配
数组的初始化:
在创建数组的同时就为数组元素分配空间并赋值
数组类型 数组名[ ] = {元素1,元素2,…} 或 数组类型 数组名[ ] = new 数据类型[ ]{元素1,元素2,…}
数组元素的赋值
-Java中,数组元素的下标从0开始;
-元素的下标可以是整型常量或整型表达式;
-数组的查询效率高,可以通过下标进行对数组的定位检索。
数组名[元素下标] = 元素值;
创建数组:
声明数组:和使用变量要先声明一样,先声明数组的类型和名称
构造数组
foreach循环访问数组:
foreach循环:在JDK5以后版本中,增加的循环方式,是for循环的特殊简化版本。
语法为:
for(数组元素类型 变量名 : 数组名){
语句;
}
作用:
该循环方式为按照数组下标顺序,依次将冒号右边数组中的每个元素赋值给冒号左边的变量,数组长度为for循环的次数。
示例:
class Hello {
public static void main( String args[ ]) {
int a[] = {1,-12,33};
for(int i : a){
System.out.println(i);
}
}
}
数组长度
数组有length属性,用来显示本数组的长度,语法为:
数组名.length
特点:
数组的长度(length)必须>=0;
length为只读,不能被赋值。
利用length遍历数组
示例:
class Hello {
public static void main( String args[ ]) {
int a[] = {1,-12,33};
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
一维数组 数组的异常
数组越界异常(ArrayIndexOutOfBoundsException )
多维数组的创建:
数组类型 数组名 [ ] [ ]
数组类型[ ] [ ] 数组名
数组类型[ ] 数组名 [ ]
多维数组的创建:
数组名 = new 数据元素类型[ 行数 ] [ 列数 ] ;
数组名 = new 数据元素类型[ 行数 ] [ ] ;
多维数组的初始化:
数组类型 数组名[ ][ ] = { {元素11,元素12,…} , {元素21,元素22,… } }
数组类型 数组名[ ][ ] = new 数据类型[ ][ ] { {元素11,元素12,…} , {元素21,… } }
一维数组应用
从键盘输入班级学员成绩,计算全班学员的平均分
冒泡排序法(Bubble Sort)
冒泡排序法是一种简单的排序算法
它重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数组的工作是重复地进行直到没有再需要交换,也就是说该数组已经排序完成。
// 冒泡排序(下沉法)
public static void bubbleSort(int[] a) {
for (int i = 1; i < a.length; i++) {
for (int j = 0; j < a.length - i ; j++) {
if (a[j] > a[j + 1]) {
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}