一:数组
数组是多个相同类型信息的集合,通过数组可以统一管理这些数据。
数组是一组相同类型的变量,可以通过公共的名称类引用,数组可以定义为任何类型,并且可以是一维或多维的,数组中的元素是可以通过它的下标来访问的。
二:一维数组
所谓一维数组,就是一组相同类型数值的集合。
创建一个数组之前需要声明数组,一维数组声明如下:
数组类型 数组名[]; 如:int num[];
数组类型[] 数组; 如:int[] num;
数组类型是Java语言中的任何一种基本数据类型或引用类型。
数组名是任何合法的Java标识符。
Java语言使用new运算符创建一个数组并为数组分配其所需要的内存空间。
new 数据类型[数组大小]
new关键字是分配内存空间。
声明方式一:
int[] month; //声明数组
month = new int[12]; //分配12个大小整形变量的内存空间
声明方式二:
int[] month = new int[12];
new所分配的数组的元素自动初始化为0。
所有的数组的下表都是以0开始的。
//文件名:ArrayDemo.java
class ArrayDemo
{
public static void main(String[] args)
{
//定义变量sum,存储数组中的所有元素的和
float sum = 0;
int a[];
a = new int[10];//创建一个数组a
//给数组a里的元素赋值
a[0] = 45;
a[1] = 19;
a[2] = 25;
a[3] = 34;
a[4] = 23;
a[5] = 35;
a[6] = 60;
a[7] = 27;
a[8] = 16;
a[9] = 32;
//循环遍历数组中元素,把各个元素的值相加
for(int i = 0; i<=9; i++){
sum = sum =a[i];
}
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[i]);
sumDays += monthDays[i];
}
System.out.println("总天数为:" + sumDays);
}
}
三:二维数组(多维数组)
int[ ][ ] person; //方式一, 建议使用这种方式声明,看起来更像数组
int person[ ][ ]; //方式二
初始化方式一
规则的二维数组:
int[ ][ ] person = new int[5][4]; //方式一
int[ ][ ] person = new int[5][ ]; //方式二
person[0] = new int[4];
person[1] = new int[4];
person[2] = new int[4];
person[3] = new int[4];
person[4] = new int[4];
初始化方式二
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[i].length; j++)
{
switch(j)
{
case 0:
chinesesum += person[i][j];
break;
case 1:
mathsum += person[i][j];
break;
case 2:
englishsum += person[i][j];
break;
case 3:
computersum += person[i][j];
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[5][ ]; //方式三
person[0] = new int[4];
person[1] = new int[4];
person[2] = new int[2];
person[3] = new int[3];
person[4] = new int[3];
//文件名:ArrayDemo4.java
public class ArrayDemo4 {
public static void main(String[] args)
{
int[][] a = new int[4][];
a[0] = new int[2];
a[1] = new int[3];
a[2] = new int[]{89,45,34,53};
a[3] = new int[]{10};
a[0][0] = 23;
a[0][1] = 322;
a[1][0] = 85;
a[1][1] = 185;
a[1][2] = 285;
for(int i = 0; i<a.length; i++)
{
for(int j=0; j<a[i].length; j++)
{
System.out.print(a[i][j] + "\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[10];
int[] b = new int[10];
int[] c = new int[10];
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[2] = 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,但不包括5
System.out.println("数组a排序后:");
for(int i=0; i<a.length; i++)
{
System.out.print(a[i] + "\t");
}
System.out.println();
System.out.println("数组b排序后:");
for(int i=0; i<b.length; i++)
{
System.out.print(b[i] + "\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[0];
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));
}
}
分享到:
相关推荐
信息学奥赛一本通-教程PPT课件(第五版)
本人上课时老师的课件,讲的还不错,所以建议大家看看
数据结构练习(含答案):第五章数组和广义表 本资源摘要信息涵盖了数据结构中数组和广义表的相关知识点,包括数组的基本操作、数组的存储方式、稀疏矩阵的压缩存储方法、对称矩阵的存储方式等。 一、选择题 1. ...
南航数据结构课程中的第五章 数组和广义表PPT。
Java语言中的数组是一种非常基础且...总之,Java第5章关于数组的内容是学习Java编程的基础,理解和熟练运用数组对于后续的学习和实际项目开发至关重要。通过实践和代码分析,可以加深对数组特性的理解,提高编程技能。
第5章 数组.ppt
第五章 数组主要介绍了在程序设计中如何使用数组这一重要的数据结构。数组是将相同类型的多个变量有序组织在一起的集合,它可以是数值数组、字符数组、指针数组或结构数组等。C语言中的数组被视为构造数据类型,由...
第五 章 数组和广义表
第五章数组和广义表答案
"accp5.0 java第八章 数组(改)"着重讲解了Java编程中的数组概念及其应用,这是一份经过修订和完善的知识资料,旨在帮助学习者修正之前的理解偏差,并提供最新的学习内容。 数组在Java中是一系列相同类型的数据的...
C语言程序设计:第五章 数组.ppt
"数据结构第五章数组与广义表" 本章主要介绍数组和广义表的概念、定义、顺序表示和实现、存储结构等知识点。 数组的定义 数组是我们最熟悉的数据类型,在早期的高级语言中,数组是唯一可供使用的数据类型。数组中...
第5章 数组(C++版)