总结-----数组

数组概述

数组的介绍:数组是最为常见的一种数据结构。是相同类型的,用一个标识符封装到一起的基本类型数据序列或对象序列。可以用一个统一的的数组名和下标来唯一确定数组中的元素。实质上,数组是一个简单的线性序列。因此访问速度很快。

数组概述
(1)数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
(2)创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
(3)数组的长度一旦确定,就不能修改。
(4)我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
(5)数组的分类:
a: 按照维度:一维数组、二维数组、三维数组、…
b: 按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)

一维数组的创建和使用

一维数组的声明方式:

数组元素类型 数组名字[];
数组元素类型[] 数组名字;

实例:

int arr[] 声明int型数组,数组中的每个元素都是int类型
String str[] 声明 String 数组,数组中的每个元素都是String类型

Java语言中声明数组时不能指定其长度(数组中元素的数),
例如:

 int a[5]; //这种方式是违规的

一维数组的使用:初始化

动态初始化 :数组声明且为数组元素分配空间与赋值的操作分开进行
举例:

int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;

静态初始化 :在定义数组的同时就为数组元素分配空间并赋值。
举例:

int arr[] = new int[]{ 1,23};int[] arr = {1,23};

一维数组的使用:数组元素的引用

(1)定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
(2)数组元素的引用方式:数组名[数组元素下标]
a: 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
b:数组元素下标从0开始;

长度为n的数组合法下标取值范围: 0>n-1;
如int a[]=new int[3]; 
可引用的数组元素为a[0]、a[1]、a[2]

每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数)
注意数组一旦初始化,其长度是不可变的

一维数组的练习举例:

//求出一个同学十门成绩的最高分,最低分,平均分、分数总和;
import java.util.Scanner;

public class Work1 {
	public static void main(String[] args) {
		int [] arr = new int[10];
		Scanner sc = new Scanner(System.in);
		
		for(int i = 0; i< arr.length;i++){
			System.out.println("请录入第"+(i+1)+"门课程的成绩:");
			arr[i] = sc.nextInt();
		}
		
		//最高分
		int max = arr[0];
		for(int j = 1;j<arr.length;j++){
			if (max < arr[j]){
				max = arr[j];
			}		
		}
		System.out.println("最高分为:"+max);
		
		//最低分
		int min = arr[arr.length-1];
		for(int k = 1;k<arr.length;k++){
			if (min > arr[k]){
				min = arr[k];
			}		
		}
		System.out.println("最低分为:"+min);
		
		//分数总和
		int sum = 0;
		for(int m = 0; m<arr.length;m++){
			sum += arr[m];
		}
		
		//平均分
		double avg = (sum - max - min)/10.0;
		System.out.println("平均分为:"+avg);
		
	}
	
}

二位数组的创建与使用

二维数组的创建

二维数组可以看做是特殊的一维数组,
先声明,再用new 运算符进行内存分配
语法如下:

数组元素的类型 数组名字[][]
数组元素的类型[][] 数组名字

实例代码

int arr[][]

二维数组初始化

二维数组的初始化与一位数组的初始化类似,同样可以用大括号完成。

type arr[][]={value1,value2,value3....}
type:数组数据类型
arr:数组名称
value:数组中个元素的值

实例:

int arr[][]={{12,0},{45,10}};

初始化二维数组后,要明确数组的下标都是从0开始的。
int型二维数组是以int a[][]来定义的,所以可以直接给a[x][y]赋值;
例:a[1][1]=20

使用二维数组

实例:

输出一个34列且所有元素都为0的矩阵
public class Work{
	public static void main(String[])args{
		int a[][] = new int[3][4];
		for(int i = 0;i<a.length;i++){
			for(int j = 0;i<a[i].length;j++){
				System.out.print(a[i][j]);
			}
			System.out.print()
		}
	}
}

格式1 (动态初始化): int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2 (动态初始化): int[][] arr = new int[3][];
二维数组中有3个一维数组。
每个一维数组都是默认初始化值null (注意:区别于格式1)
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];
注:int[][]arr = new int[][3]; //非法
格式3 (静态初始化): :int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组,二维数组中有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = {3,8,2};
第二个一维数组 arr[1] = {2,7};
第三个一维数组 arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;

遍历数组

遍历数组是获取数组中的每个元素。通常遍历数组都是使用for循环来实现。
遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度
实例:

定义二维数组,实现将二维数组中的元素呈梯形输出。
public class Bubble{
	public static void main(String[] args){
		int b[][] = new int[][] {{1},{2,3},{4,5,6}};
		for(int k = 0;k<b.length;k++) {
			for(int c = 0;c<b[k].length;c++) {
				System.out.print(b[k][c]);
			}
			System.out.print(""+"\n");
		}
	}
}

在这里插入图片描述
在遍历数组时,使用foreach语句会更加简单,下面的实例就是通过foreach语句遍历二维数组。

public class Bubble{	//创建类
	public static void main(String[] args){		//主方法
		int arr[][] = {{4,3},{1,2}}	;	//定义二维数组
		System.out.println("数组中的元素是:"); 		//提示信息
		int i = 0;				//外层循环计数器变量
		for(int x[] : arr) {	//外层循环变量为一维数组
			i++;				//外层循环计数器递增
			int j = 0;			//内层循环计数器
			for(int e : x) {	//循环遍历每一个数组元素
				j++;			//内层计数器递增
				if(i == arr.length && j == x.length) {	//判断变量是二维数组中的最后一个元素
					System.out.println(e);				//输出二维数组的最后一个元素
				}else {
					//如果不是二维数组中的最后一个元素
					System.out.println(e+"、");   //输出信息
				}
			}
		}
	}
}

复制数组

Arrays类的coopOf()方法与copyOfRange()方法可以实现对数组的复制。
coopOf()方法:复制数组至指定长度
copyOfRange()方法:将指定数组的指定长度复制到一个新数组中。

copyOf方法

语法格式:

copyOf(arr,int newlength)
arr:要进行复制的数组
newlength:int型常量,指复制后的新数组的长度,如果新数组的长度大于数组arr的长度,则用0来填充;
如果复制后的数组长度小于数组arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。

代码实例:

import java.util.Arrays;
public class Copy{
	public static void main(String[] args){ 		
		int arr[]= new int[]{23,42.12};
		int newarr[] = Arrays.copyOf(arr,5);	//复制数组arr
		for(int i = 0;i< newarr.length;i++){	//循环遍历复制后的新数组
			System.out.println(newarr[i]);
		}
	}
}

copyOfRange()方法

语法格式

copyOfRange(arr,int formindex,int toIndex)
arr:要进行复制的数组对象
formIndex:指定开始复制数组的索引位置。
toIndex:要复制范围的最后索引位置

代码实例:

import java.util.Arrays;


public class Repeat {
	public static void main(String[] args) {
		int arr[] = new int[] {23,42,12,84,10};
		int newarr[] = Arrays.copyOfRange(arr, 0, 3);
		for (int i = 0; i < newarr.length; i++) {		//循环遍历复制后的新数组
			System.out.println(newarr[i]);
			
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript数组有很多内置方法,可以操作和处理数据。以下是JavaScript数组的所有方法列表: 1. `concat()` - 连接两个或多个数组。 2. `copyWithin()` - 在数组内部将一段元素拷贝到另一个位置。 3. `entries()` - 返回一个迭代器对象,可以遍历数组所有的键值对。 4. `every()` - 检查数组中的所有元素是否满足一个条件。 5. `fill()` - 用静态值填充一个数组中的所有元素。 6. `filter()` - 通过指定条件过滤出符合条件的数组元素。 7. `find()` - 返回找到的第一个元素,满足条件。 8. `findIndex()` - 返回目标元素索引,满足条件。 9. `forEach()` - 遍历数组,对每个元素执行指定的操作。 10. `includes()` - 判断数组是否包含指定元素。 11. `indexOf()` - 返回指定元素第一个出现的位置索引。 12. `join()` - 连接数组元素,返回字符串。 13. `keys()` - 返回一个迭代器对象,可以遍历数组的键。 14. `lastIndexOf()` - 返回指定元素最后一次出现的位置索引。 15. `map()` - 遍历数组,对每个元素执行指定的操作,将结果放入新数组。 16. `pop()` - 删除数组最后一个元素。 17. `push()` - 在数组末尾添加一个或多个元素。 18. `reduce()` - 对数组中的每个元素执行指定的操作,累积计算并返回最终结果。 19. `reduceRight()` - 与reduce()方法类似,不过是从右到左遍历数组。 20. `reverse()` - 反转数组元素的顺序。 21. `shift()` - 删除数组的第一个元素。 22. `slice()` - 截取数组元素,返回新数组。 23. `some()` - 检查数组中是否存在至少一个元素满足一个条件。 24. `sort()` - 排序数组元素。 25. `splice()` - 删除、插入或替换数组中的元素。 26. `toString()` - 将数组转换成字符串。 27. `unshift()` - 在数组的开头添加一个或多个元素。 28. `valueOf()` - 返回数组本身。 以上方法中,有些方法会改变原数组,有些方法则不会。需要注意使用时,避免产生错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值