一、数组的概念:
数组是具有相同数据类型的一组数据的集合,数组中的每个元素具有相同的数据类型。
二、一维数组的创建
1、创建一维数组
1)先声明再用new运算符进行内存分配
声明一维数组的两种方式:
1)数组元素类型 数组名称 [ ] ;2)数组元素类型 [ ] 数组名称;
//声明一维数组示例代码
int arr[]; //声明int型数组,数组中的每个元素都是int型数值
String str[]; //声明String型数组,数组中每个元素都是String型数值
数组元素类型决定了数组的数据类型,数组名为一个合法的标识符,符号 [ ] 指明该变量是一个数组类型变量,单个[ ] 表示要创建的数组是一个一维数组。
声明数组之后还不能立即访问它的任何元素,因为声明数组知识给出了数组名称和数组元素的数据类型,要想真正使用数组还要给它分配内存空间。在给数组分配内存空间的时候必须指明数组的长度(这样系统才能计算出需要分配的内存空间)。
为数组分配内存空间的语法格式:
数组名字 = new 数组元素的类型 [数组元素的个数] ;
//为数组分配内存的示例代码
arr = new int [6];
//创建一个有六个元素的整型数组,并将创建的数组对象赋值给引用变量arr
//arr为数组名称,[] 内的值为元素下标,数组通过元素下标区分数组中的元素
//数组的下标是从0开始,比如创建的数组arr有六个元素,则下标为0~5
数组元素的个数:指定数组中变量的个数,即数组的长度;
我们可以通过 数组名.length获取数组长度,比如通过 arr.length 获取数组arr的长度,即arr数组中的变量个数。
2)声明的同时为数组分配内存
这种创建数组的方法是将数组的声明和内存的分配在一起执行
语法:
数组元素的类型名 数组名 = 呢哇数组元素的类型 [数组元素的个数] ;
//示例代码
int arr[] = new int [10];
int [] arr1 = new int [10]; //这两种写法都可以
2、初始化一维数组
1)数组与基本数据类型一样可以进行初始化,数组的初始化可分别初始化数组中的每个元素。
// 数组的初始化有两种形式:
int arr[] = new int[] {1,5,6,4,6}; //第一种初始化方式
int arr2[] = {2,5,6,7,8,9}; //第二种初始化方式
由上面的代码可以看到 new int [] 是可以省略的
2)数组在定义完成之后只能通过数组下标一个一个赋值,而不能一次性给多个数组元素赋值
//给单个数组元素赋值
int arr[] = new int[10]; //定义一个数组,默认数组元素值都为0
arr[2] = 6; //将数值6赋值给数组中 第三个元素
3)数组定义完之后数组长度不可改变,数组长度可以使用 数组名.length 获取
//数组长度的获取
int arr[] = new int[]{1,3,5,6,8,4}; //创建一个数字
System.out.print(arr.length); //输出数组的长度,结果为6
三、一维数组的使用
1、数组的初始化即数组长度的输出
public class Array01 {
public static void main(String[] args) {
int [] arr = {1,2,5,8,1,21};
int arr1[] = new int[]{1,5,9,5,4,8,5,4,5,5};
int arr2[] = new int[20];
System.out.println(arr[3]); //输出数组arr下标为3的元素,即第四个元素
System.out.println(arr1[2]); //输出数组arr1下标为2的元素,即第三个元素
System.out.println(arr2[2]); //输出数组arr2下标为2的元素,即第三个元素
System.out.println("数组长度:"+arr.length); //输出数组arr的元素个数
System.out.println("数组长度:"+arr1.length); //输出数组arr1的元素个数
System.out.println("数组长度:"+arr2.length); //输出数组arr2的元素个数
}
}
//输出结果如下
8 //数组arr第四个元素为8
9 //数组arr1第三个元素为9
0 //数组arr2由于没有初始化默认各元素初始值为0
数组长度:6 //数组arr长度为6,即元素个数为6
数组长度:10 //数组arr1长度为10
数组长度:20 //数组arr2长度为20
2、输出数组中所以奇数的和
public class Array02 {
public static void main(String[] args) {
int sum = 0;
int arr[]={29,23,16,3,6,7,3,10,8,12};
for(int i = 0;i<arr.length;i++)
{
if(arr[i]%2==1) //若不能被二整除则为奇数
{
sum += arr[i]; //满足条件的数组元素求累加和
}
}
System.out.println(sum);
}
}
3、将数组中能被三整除的数输出到另一个数组
int j = 0;
int arr1[] = new int[10];
int arr[]={5,27,9,15,6,42,47,10,8,12};
for(int i = 0;i<arr.length;i++) //循环执行直到数组中每个元素都被遍历一遍
{
if(arr[i]%3==0) //如果满足条件则执行{}内的语句
{
arr1[j] = arr[i]; //将能被三整除的数放入数组arr1中
j++; //数组arr1下标+1,即移向下一个空的数组空间
}
}
for(int k = 0;k<arr.length;k++)
//循环执行次数为数组arr元素个数,这里输出arr1中的元素
{
System.out.print(arr1[k]+",");
}
4、判断输入的数是否在数组中
int ans = 1;
int arr[] = new int[]{1,9,2,11,89,22,23,33};
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要寻找的数字:");
int num = scanner.nextInt();
for(int i = 0;i<arr.length;i++)
{
if(arr[i]==num)
{
System.out.println("找到了相同的数:"+arr[i]);
break;
}
else if(ans<arr.length)
{
ans++;
if(ans==arr.length)
System.out.println("没有相同的数");
}
}
5、定义一个数组,求数组的最大值、最小值和平均值
int max=0,min=999,aver=0,sums=0;
int [] arr = new int[]{8,5,9,18,65,3,4,24,84,2,4,3,99};
for(int i = 0;i<arr.length;i++)
{
if(arr[i]<min)
{
min = arr[i];
}
if(arr[i]>max)
{
max = arr[i];
}
sums+=arr[i];
}
aver=sums%arr.length;
System.out.println("最大值为:"+max);
System.out.println("最小值为"+min);
System.out.println("平均值为"+aver);