一、数组的基本概念
1、数组是一组相同数据类型元素的集合,是一个容器
2、数组本身是引用数据类型,是一个对象
3、数组可以存储基本数据类型,也可以存储引用数据类型
4、数组创建时必须指定长度,且长度不可变
5、数组中每个元素空间是连续的
二、数组的创建
1、声明方式:
数据类型 [] 数组名字
例如:int [] a;
数据类型 数组的名字 []
例如: int a [];
2、创建数组,指定数组长度
创建数组同时将其用指定的值初始化,有几个元素容量就是多少
int[] ary1 = new int[]{1, 2, 3, 4, 5};
还可以简化为下面写法
int[] ary2 = {1, 2, 3, 4, 5};
三、数组访问
1、数组索引:
(1)、数组的索引从0开始。
(2)、索引的数据类型是整数(int)
(3)、索引最大值和数组长度始终差
2、获取数组长度
数组名.length
int a=a.length;
四、数组迭代
1、第一种:for循环:
2、第二种:增强for循环
三、数组排序:
(一)、冒泡排序:每次取出相邻的两个元素进行比较,选出最大或最小的数放在每轮比较的最后
public class BubbleShort {
public static void main(String[] args) {
//定义数组
int[] a={5,4,3,2,1};
//外层循环,控制循环轮数
for(int i=0;i<a.length-1;i++){
//内层循环:控制每轮循环次数
for(int j=0;j<a.length-1-i;j++){
//判断是否需要交换
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
System.out.println(Arrays.toString(a));
}
}
冒泡排序改进: 设置一个变量判断排序是否需要继续进行
public class BubbleShort_2 {
public static void main(String[] args) {
int[] a={5,4,3,2,1,8,9,10};
for(int i=0;i<a.length-1;i++){
int flage=0;
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
flage=1;
}
}
if(flage==0){
break;
}
}
System.out.println(Arrays.toString(a));
}
}
(二)、选择排序:假设第一个元素就是最小值/最小值,用第一个位置上的元素与后面每一个位置上的元素进行比较,满足条件,交换位置.
public class SelsctShort {
public static void main(String[] args) {
int[] a={5,4,3,2,1};
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[j]<a[i]){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
System.out.println(Arrays.toString(a));
}
}
四、二维数组:数组中的每一个元素又是一个数组
1、声明:
数据类型 [][] 数组名字
例如:int [][] a;
数据类型 数组的名字 [][]
例如: int a [][];
2、遍历(利用循环):
public class Array {
public static void main(String[] args) {
int[][] a = {{1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11, 12}};
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
3、例题:利用数组输出杨辉三角形
public class Triangle {
public static void main(String[] args) {
int[][] a=new int[10][21];
for(int i=0;i<21;i++){
if(i==10){
a[0][i]=1;
continue;
}
a[0][i]=0;
}
for (int i=1;i<10;i++){
for (int j=1;j<20;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
}
for (int i=0;i<10;i++){
for (int j=0;j<21;j++){
if(a[i][j]==0){
System.out.print("\t");
continue;
}
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
}