在日常生活中,盒子的作用是存放东西,但是是不可能把衣服和食品放在一起的,会有专门放衣服的盒子,也会有专门放食品的盒子。在Java中,数组就好比日常生活中的盒子,用来存储数据。每一个数组也是有类型的,用来放相应类型的数据。数组是一种存储数据的数据结构。
数组就是一组数的集合,而且这些数的类型必须是相同的。假设现在有100个苹果,如果分散存放会很不好管理,如果集中存放的话,大家会想到放在一个盒子里。在Java里也是这样,如果100个苹果每一个都放在一个变量里,会显得代码很凌乱,如果用数组存放会显得代码很整洁。所以说数组是一种存放数据的数据结构。
例1:创建不同类型的数组,并输出第一个元素的默认值。
public class Test01 { public static void main(String args[]) { // Define a multidimensional array // int i[][] = new int [4][4]; //For array subscript for ten elements assignment // int i[1][5] = 10; //Create a boolean types of arrays, length is 2 boolean bo[] = new boolean[2]; //Create a byte types of arrays, length is 2 byte b[] = new byte[2]; //Create a char types of arrays, length is 2 char c[] = new char[2]; //Create a short types of arrays, length is 3 short s[] = new short[2]; //Create a int types of arrays, length is 2 int i[] = new int [2]; //Create a long types of arrays, length is 2 long l[] = new long[2]; //Create a float types of arrays, length is 2 float f[] = new float[2]; //Create a double types of arrays, length is 2 double d[] = new double [2]; System.out.println(bo[0]); System.out.println(b[0]); System.out.println(c[0]); System.out.println(s[0]); System.out.println(i[0]); System.out.println(l[0]); System.out.println(f[0]); System.out.println(d[0]); } }
运行结果:
[haoyue@centos exercise03]$ java Test01
false
0
0
0
0
0.0
0.0
例2:
public class Test02 { public static void main (String args[]) { Boolean bo[] = new Boolean[2]; Byte b[] = new Byte[2]; System.out.println(bo[0]); System.out.println(b[0]); } }
运行结果:
null null
数组除了可以在创建的同时进行初始化,也能在运行期间对数组各个元素进行赋值。对数组的循环赋值通常使用for循环来完成,将数组中的每一个元素进行初始化。
例1:
public class Test03 { public static void main (String args[]) { int a[] = new int[10]; for (int i = 0; i < a.length; i++) { a[i] = i + 1; System.out.println("Each element of the array value:" + a[i]); } } }
运行结果:
[haoyue@centos exercise03]$ java Test03
Each element of the array value:1
Each element of the array value:2
Each element of the array value:3
Each element of the array value:4
Each element of the array value:5
Each element of the array value:6
Each element of the array value:7
Each element of the array value:8
Each element of the array value:9
Each element of the array value:10
数组里各个元素的值可以用数组的引用和使用循环对其赋值,但要注意两个不同长度的数组进行复制的时候下标越界的问题,要对数组的下标进行判断。
例2:
public class Test04 { public static void main (String args[]) { int a[] = new int[10]; int b[] = new int[a.length]; for (int i = 0; i < a.length; i++) { a[i] = i + 1; System.out.print(a[i] + " "); } System.out.println(""); System.out.println("Each element of the array value:"); for (int j = 0; j < b.length; j++) { b[j] = a[j]; System.out.print(b[j] + " "); } System.out.println(""); } }
运行结果:
[haoyue@centos exercise03]$ java Test04
1 2 3 4 5 6 7 8 9 10
Each element of the array value:
1 2 3 4 5 6 7 8 9 10
数组元素的排序在数组的操作中是很常见的。Java中提供了一个java.util.Arrays类作为数组的辅助功能类,其中提供了排序、数组转换等操作。数组的排序主要分为冒泡排序法和使用sort方法进行排序。下面分别介绍两种数组元素的排序方法。
例1:冒泡排序
public class BubbleSort { public static void main (String args[]) { int a[] = {1,3,4,2,5,7,8}; for (int i = 0; i< a.length; i++) { for(int j = i + 1; j < a.length; j++) { if (a[j] < a[i]) { int tem = a[i]; a[i] = a[j]; a[j] = tem; } } } for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
运行结果:
1,2,3 4,5,6,7,8
例2:
import java.util.Arrays; public class Sort { public static void main (String args[]) { int a[] = {1,3,4,2,5,7,8}; Arrays.sort(a); System.out.println("After array sort: "); printa(a); } private static void printa(int[] a) { for (int i = 0; i < a.length; i++) { System.out.println("a["+i+"]"+a[i]+" "); } } }
运行结果:
[haoyue@centos exercise03]$ java Sort
After array sort:
a[0]1
a[1]2
a[2]3
a[3]4
a[4]5
a[5]7
a[6]8
在数组中查找一个指定的元素,需要将数组中的所有元素依次和指定的元素作对比,如果匹配则打印出来。
例1:
public class Test06 { public static void main (String args[]) { int a[] = {12,3,45,23,46,1}; int n = 45; for (int i = 0; i < a.length; i++) { if (a[i] == n) { System.out.println("To locate the position of the element"+(i+1)+""); } } } }
运行结果:
To locate the position of the element3
例2:大印6个字母
public class Test07 { public static void main(String args[]) { char a[] = new char[26]; for (int i = 0; i < 26; i++) { a[i] = (char)('A' + 1); System.out.print(a[i]); if (a[i] == 'Z') { System.out.println(""); } } } }
运行结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ