6.1 数组简介
数组是java中最常见的一种数据结构,可用于存储多种数据。
6.2 数组定义
type [ ]arrayName;或者type arrayName[ ];
实例:int [ ]arr ; int arr[ ].
6.3数组的初始化
(1)静态初始化
格式 arrayName[ ]=new type[ ]{element1,element2,element3……}
实例:int arr[ ]=new int[ ]{1,2,3};
public class Demo4 {
public static void main(String[] args) {
//定义一个数组,并且静态初始化
int arr[]=new int[] {1,2,3};
//普通的遍历数组方式
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
Result:
1
2
3
(2)动态初始化
格式 arrayName=new type[length];
实例:int arr2[]=new int[3];
public class Demo5 {
public static void main(String[] args) {
//定义一个数组,然后动态初始化,长度为3
int arr[]=new int[3];
for(int i:arr) {
System.out.println(i);
}
}
}
Result:
0
0
0
6.3 二维数组及多维数组
二维数组静态化初始化 格式:
arrayName[ ]=new type[ ]{{element1,element2},{element1,element2},{element1,element2}};
实例: int[ ][ ]arr=new int[ ][ ]{ {1,2,3} ,{4,5,6} ,7,8,9} };
二维数组动态化初始化 格式:
arrayName=new type[length][length];
实例: int [ ][ ]arr2=new int[3][3];
public class Demo6 {
public static void main(String[] args) {
//二维数组的静态初始化
int [ ][ ]arr=new int[ ][ ] {{1,2,3},{4,5,6},{7,8,9}};
for (int i=0;i<arr.length;i++) {
for(int j=0;j<arr[0].length;j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
//二维数组的动态初始化
int [ ][ ]arr2=new int[3][3];
for(int i=0;i<arr2.length;i++) {
for(int j=0;j<arr2[0].length;j++) {
System.out.print(arr2[i][j]+" ");
}
System.out.println();
}
}
}
6.4 数组排序实例——起泡法
对4,21,0,-12,-3 排序 升序
原理:起泡法是从一端开始比较的,第一次循环就是把最大数放到最后一个位置,第二次循环就是把第二最大数放到倒数第二位置。整个过程就像烧开水一样,较小值像水中的气泡一样逐趟往上冒,每一趟都有一块“最大”的石头沉到水底。
public static void main(String[] args) {
int temp;
int [ ]arr= {4,21,0,-12,-3};
//循环的次数n-1次
for(int i=0;i<arr.length-1;i++) {
//比较次数n-1-i
for(int j=0;j<arr.length-1-i;j++) {
//假如前面一个数大于后面一个数,则交换数据
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i:arr) {
System.out.print(i+" ");
}
}
作业:
1.定义一个数组,获取数组中的最大值和最小值
public static void main(String[] args) {
int []arr= {10,5,6,8,9,-6,-3,0};
int i,min,max;
min=arr[0];max=arr[0];
System.out.print("数组arr的元素包括:");
for(i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
if(arr[i]>max) {
max=arr[i];
}
if(arr[i]<min) {
min=arr[i];
}
}
System.out.println("\n数组的最大值是:"+max);
System.out.println("数组的最小值是:"+min);
}
2.定义一个由整数组成的数组,要求求出其中的奇数个数和偶数个数
int []arr= {10,5,6,8,9,-6,-3,0};
int i,m=0,n=0;
System.out.print("数组arr的元素包括:");
for(i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
if(arr[i]%2==0) {
m++;
}
if(arr[i]%2!=0) {
n++;
}
}
System.out.println("\n偶数个数是:"+m);
System.out.println("奇数个数是:"+n);
3.现在有如下一个数组:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求将以上数组中的0 项去掉,将不为0 的值存入一个新的数组;
int oldarr[]= {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int j=0;
System.out.println("数组newarr的元素包括: ");
for(int i=0;i<oldarr.length;i++) {
if(oldarr[i]!=0) {
j++;//记录不为0的个数
}
}
int []newarr=new int[j];//定义一个数组,长度为j,就是不为0的个数
j=0;
for(int i=0;i<oldarr.length;i++) {
if(oldarr[i]!=0) {
newarr[j]=oldarr[i];
j++;
}
}
for(int c:newarr) {
System.out.print(c+" ");
}
System.out.println();