第五章 数组
一:数组数组是多个相同类型信息的集合,通过数组可以统一管理这些数据。
数组是一组相同类型的变量,可以通过公共的名称类引用,数组可以定义为任何类型,并且可以是一维或多维的,数组中的元素是可以通过它的下标来访问的。
二:一维数组
所谓一维数组,就是一组相同类型数值的集合。
创建一个数组之前需要声明数组,一维数组声明如下:
数组类型 数组名[]; 如:int num[];
数组类型[] 数组; 如:int[] num;
数组类型是Java语言中的任何一种基本数据类型或引用类型。
数组名是任何合法的Java标识符。
Java语言使用new运算符创建一个数组并为数组分配其所需要的内存空间。
new 数据类型[数组大小]
new关键字是分配内存空间。
声明方式一:
int[] month; //声明数组
month = new int; //分配12个大小整形变量的内存空间
声明方式二:
int[] month = new int;
new所分配的数组的元素自动初始化为0。
所有的数组的下表都是以0开始的。
//文件名:ArrayDemo.java classArrayDemo{public static void main(String[] args) {//定义变量sum,存储数组中的所有元素的和float sum = 0;int a[];a = new int;//创建一个数组a//给数组a里的元素赋值a = 45;a = 19;a = 25;a = 34;a = 23;a = 35;a = 60;a = 27;a = 16;a = 32;//循环遍历数组中元素,把各个元素的值相加for(int i = 0; i<=9; i++){sum = sum =a;}System.out.println("平均年龄为:"+sum/10);}}
//文件名:ArrayDemo2.java
public class ArrayDemo2 { public static void main(String[] args) {int[] monthDays = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int sumDays = 0;//循环数组中的元素,将它们打印出来for(int i = 0; i < monthDays.length; i++){System.out.println((i + 1) + "月的天数为:" + monthDays);sumDays += monthDays;}System.out.println("总天数为:" + sumDays);} }
三:二维数组(多维数组)
int[ ][ ] person; //方式一, 建议使用这种方式声明,看起来更像数组
int person[ ][ ]; //方式二
初始化方式一
规则的二维数组:
int[ ][ ] person = new int; //方式一
int[ ][ ] person = new int[ ]; //方式二
person = new int;
person = new int;
person = new int;
person = new int;
person = new int;
初始化方式二
int[ ][ ] person = new int[ ][ ]{{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15},{16,17,18,19}};
//文件名:ArrayDemo3.java
public class ArrayDemo3 { public static void main(String[] args) { int[ ][ ] person = new int[][ ]{ {95,85,96,100},{97,88,57,98},{95,87,78,85},{98,95,68,58}}; int chinesesum = 0; //语文总分 int mathsum= 0;//数学总分 int englishsum = 0;//英文总分 int computersum = 0;//计算机总分 for(int i=0; i<person.length; i++) { for(int j=0; j<person.length; j++) { switch(j) { case 0: chinesesum += person; break; case 1: mathsum += person; break; case 2: englishsum += person; break; case 3: computersum += person; break; } } } System.out.println("班级语文总分为:" + chinesesum + ",平均分为:" + (double)chinesesum/person.length); System.out.println("班级语文总分为:" + mathsum + ",平均分为:" + (double)mathsum/person.length); System.out.println("班级语文总分为:" + englishsum + ",平均分为:" + (double)englishsum/person.length); System.out.println("班级语文总分为:" + computersum + ",平均分为:" + (double)computersum/person.length); }}
不规则二维数组
二维数组的第二维长度都可以不相同,如:
int[ ][ ] person = new int[ ]; //方式三
person = new int;
person = new int;
person = new int;
person = new int;
person = new int;
//文件名:ArrayDemo4.java
public class ArrayDemo4 {public static void main(String[] args){int[][] a = new int[];a = new int;a = new int;a = new int[]{89,45,34,53};a = new int[]{10};a = 23;a = 322;a = 85;a = 185;a = 285;for(int i = 0; i<a.length; i++){for(int j=0; j<a.length; j++){System.out.print(a + "\t");}System.out.print("\n");}}}
四:数组的常用操作
1. 获取数组的长度, length属性
2. 数组的比较,Arrays类提供了一个equals来比较两个数组是否相等
3. 数组的排序,Arrays类提供了数组排序的sort函数
4. 把数组转换为字符串,Arrays类的toString方法函数可以将一个指定的数组转换为一个字符串
//文件名:EqualsArray.java
import java.util.Arrays;public class EqualsArray{public static void main (String[] args) {int[] a = new int;int[] b = new int;int[] c = new int;Arrays.fill(a,3);Arrays.fill(b,3);Arrays.fill(c,3);if(Arrays.equals(a,b)){System.out.println("数组a和b相等");}else{System.out.println("数组a和b不相等");}if(Arrays.equals(a,c)){System.out.println("数组a和c相等");}else{System.out.println("数组a和c不相等");}b = 30;if(Arrays.equals(a,b)){System.out.println("数组a和b相等");}else{System.out.println("数组a和b不相等");}} }
//文件名:ArraySort.java
import java.util.Arrays;public class ArraySort {public static void main (String[] args) {int[] a = {45,4,5,98,7,41};int[] b = {9,4,7,3,24,1};Arrays.sort(a); //整个排序Arrays.sort(b,2,5); //部分排序,从下标2开始,到下标5,但不包括5System.out.println("数组a排序后:");for(int i=0; i<a.length; i++){System.out.print(a + "\t");}System.out.println();System.out.println("数组b排序后:");for(int i=0; i<b.length; i++){System.out.print(b + "\t");}System.out.println();}}
//文件名:ToString.java
import java.util.Arrays;public class ToString{public static void main (String[] args) {byte[] a = {1,2,3,4};short[] b = {30, 34};int[] c = {654,65,465};long[] d = {465L,79000L};char[] e = {'a','s','d','8','9','7'};boolean[] f = {true, false};float[] g = {};double[] h = new double;System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(b));System.out.println(Arrays.toString(c));System.out.println(Arrays.toString(d));System.out.println(Arrays.toString(e));System.out.println(Arrays.toString(f));System.out.println(Arrays.toString(g));System.out.println(Arrays.toString(h));} }
页:
[1]