数组分为一维数组,二维数组和多维数组
一维数组
数组的初始化
数组的初始化分为动态初始化和静态初始化
动态初始化
声明并开辟数组
数据类型[] 数组名=new 数据类型[数组长度]
数组长度:代表你可以向数组存储多少个数据
数组的下标是从零开始到数组长度-1,当超出数组的索引长度则会产生java.lang.ArrayIndexOutOfBoundsException异常信息
数组名.length:获取数组长度
例如:
//定义一个长度为5的数组
int [] as=new int[5];
//为数组赋值
int[0]=1;
int[1]=2;
int[2]=3;
int[3]=4;
int[4]=5
//输出数组
for(int i=0;i<as.length;i++){
System.out.println(as[i]);
}//通过下标输出数组的各个数值
静态初始化
声明并开辟数组
数据类型[] 数组名=new数据类型{元素1,元素2,元素3……}
例如
int [] a=new int{1,2,3,4,5,6};//定义个数组
for(int i=0;i<a.length;i++){
System.out.pringln(a[i]);
}//输出数组
数组属于引用数据类型,数组在使用前一定要实例化 。如果使用了没有开辟的空间的数组则会报NullPointerException异常。
二维数组
二维数组就是数组中数组
格式:
数据类型[][] 数组名=new 数据类型[行索引][列索引];
或
数据类型[][] 数组名=new 数据类型{{},{},{}};
举例
//声明一个二维数组两行三列的数组
int[][] a=new int{{1,2,3},{4,5,6}};
//外部循环输出行数
for(int i=0;i<a.length;i++){
//内部训话输出列数
for(int j=0;j<a[i].length;j++){
System.out.println(a[i][j]);
}
}
多做几道关于数组的题
例如:
1.数组反转
/*
* 给定一个数组将数组将数组反转例如:1,2,3,4,5反向输出:5,4,3,2,1
* */
public static void main(String[] args) {
//定义一个数组
int[] a= {1,2,3,4,5};
//定一个变量获取最后一个数
int j=a.length-1;
//定义一个暂时存储的变量
int c;
for(int i=0;i<a.length/2;i++) {//这个循环中是将数组中的元素进行交换
c=a[i];
a[i]=a[j];
a[j]=c;
j--;
}
//遍历出数组中的元素
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
2.获取最大数
/*给定一个数组获取数组中的最大数
* 思路:
* 第一个数与后一个数比较获取最大的数
* 用最大的数在与后一个数比较获取最大的数
* 以此类推
* */
public static void main(String[] args) {
int[] a= {9,8,6,54,7,4,34,123};//定义一个数组
int c=a[0];
for(int i=0;i<a.length;i++) {
if(c<a[i]) {
c=a[i];
}
}
System.out.println(c);
}
3.排序
/**
*给定一个数组用输出从大到小的数组
*冒泡排序
* 冒泡排序的思想是:
* 将第一个与后一个数相比较如果前一个数小于后一个数就将这两个数
* 交换位置,以此类推
*/
public static void main(String[] args) {
int[] a= {0,1,2,3,4,-1,6,7,-2};
int c=0;
for(int i=0;i<a.length;i++) {
for(int j=i;j<a.length;j++) {
if(a[i]<a[j]) {
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
}
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}