Java

您所在的位置:网站首页 java如何创建一个数组 Java

Java

2022-05-22 02:25| 来源: 网络整理| 查看: 265

本篇主要讲解的就是数组的创建和使用方法,以及Arrays类提供的操作数组的方法。

一、数组概述 数组是具有相同数据类型的一组数据的集合。例如:球类的集合—乒乓球、足球、篮球等。在程序设计中,可以将这些集合称为数组,数组中每个元素具有相同的数据类型。在程序设计中引入数组可以更有效地管理和处理数据,可以根据数组的维数分为一维数组和二维数组…在java中,同样可以将数组看成一个对象,虽然基本数据类型不是对象,但是基本数据类型组成的数组却是对象。 二、一维数组的创建及使用

一维数组实质上是一组相同类型数据的线性集合,当程序中需要处理一组数据或者传递一组数据时可以应用这种类型的数组。

2.1 创建一维数组

数组作为对象允许使用new关键字进行内存分配。在使用之前,必须先定义数组变量所属的数据类型。有两种创建一维数组的形式:

先声明,再用new运算符进行内存分配

声明一维数组有两种形式:

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

1、数组元素类型决定了数组的数据类型。 2、[]指明了该变量是一个数组类型变量,单个[]表示创建的数组是一个一维数组

例:

int arr[];//定义一个int型数组 String str[];//定义一个String型数组

声明数组后不可以立即访问他的任何元素,因为没有为其分配内存空间。为数组分配空间的时候必须指明数组的长度。

数组名字 = new 数组元素类型[数组元素的个数];

数组元素个数即数组的长度 例:

arr = new int[7];

在这里插入图片描述 []中数字为数组的下标。数组通过下标来区分数组中不同的元素。数组下标从0开始

使用new关键字为数组分配内存时,整型数组中各个元素的初始值都是0

声明的同时为数组分配内存

这种方法是将数组的声明和内存的分配放在一起执行。

数组元素类型 数组名 = new 数组元素类型[数组元素个数];

例:

int week[] = new int[7];//创建week数组,指定长度为7 2.2 初始化一维数组

数组的初始化可分别初始化数组中的每个元素。

int arr[] = new int[]{1,2,3,4,5,6,7};//第一种初始化方式 inr arr2[] = {1,2,3,4,5,6,7};//第二种初始化方式

数组的初始化就是包括在大括号{}之内用逗号,分开的表达式列表。 系统自动为数组分配一定的空间

2.3 使用一维数组

在Java集合中一维数组是最常见的一种数据结构

package cn.tedu.test; public class Test { public static void main(String[] args) { //创建并初始化一维数组 int week[] = new int[] {1,2,3,4,5,6,7}; //利用循环将信息输出 for (int i = 0; i value1,value2......valuen}; type:数组的数据类型arrayname:数组名称,一个合法的标识符value:数组中各元素的值 int arr[][] = {{12,0}{10,23}}; 3.3 使用二维数组

使用二维数组输出一个3行4列且所有元素都是0的矩阵。

package cn.tedu.test; public class Test { public static void main(String[] args) { //定义一个二维数组 int a[][] = new int[3][4]; for (int i = 0; i System.out.print(a[i][j]); } System.out.println(); } } }

在这里插入图片描述

对于整型二维数组,创建成功之后系统会赋值给数组中每个元素初始值0

四、数组的基本操作

java.util包的Arrays类包含了用来操作数组的各种方法。

4.1 遍历数组

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

package cn.tedu.test; public class Test { public static void main(String[] args) { //定义一个二维数组 int b[][] = new int[][] {{1},{2,3},{4,5,6}}; for (int i = 0; i System.out.print(b[i][j]); } System.out.println(); } } }

在这里插入图片描述 在遍历数组时,使用增强for(foreach)可能会更简单。

package cn.tedu.test; public class Test { public static void main(String[] args) { //增强for---foreach int arr[][] = {{4,2,9},{1,5}};//定义一个二维数组 System.out.println("数组中的元素:"); //外层循环遍历为一维数组 for (int i[] : arr) { //循环遍历每一个数组的元素 for (int e : i) { //判断变量是否是二维数组中的最后一个元素 if (e == i.length) { //输出二维数组的最后一个元素 System.out.print(e); }else { //如果不是二维数组的最后一个元素 System.out.print(e + "、");//输出信息 } } } } }

在这里插入图片描述

4.2 填充替换数组元素

数组中的元素定义完成后,可以通过Arrars类的静态方法fill()来对数组中的元素进行替换。 (1)fill(int[] a,int value)

fill(int[] a ,int value) a:要进行元素替换的数组value:要存储数组中所有元素的值 package cn.tedu.test; import java.util.Arrays; public class Test_Swap { public static void main(String[] args) { // 创建int型数组 int arr[] = new int[5]; //使用同一个值对数组进行填充 Arrays.fill(arr, 8); for (int i = 0; i public static void main(String[] args) { // 创建int型数组 int arr[] = new int[] {1,2,3,4,5,6}; //使用fill方法对数组进行初始化 Arrays.fill(arr,1,2,8); for (int i = 0; i public static void main(String[] args) { // 创建int型数组 int arr[] = new int[] {1,6,8,2,4}; //将数组进行排序 Arrays.sort(arr); for (int i = 0; i public static void main(String[] args) { int arr[] = new int[] {54,62,13}; int newarr[] = Arrays.copyOf(arr, 6); for (int i = 0; i public static void main(String[] args) { int arr[] = new int[] {54,62,13,5,43}; int newarr[] = Arrays.copyOfRange(arr, 0, 3); for (int i = 0; i public static void main(String[] args) { int arr[] = new int[]{4,25,10}; Arrays.sort(arr); int index = Arrays.binarySearch(arr,0,1,8); System.out.println(index); } }

在这里插入图片描述 如果数组中的所有元素都小于指定的键,则为a.length(注意,这保证了当且仅当此键被找到时,返回的值将大于等于0)

注意: 必须在进行调用之前对数组进行排序(通过sort()方法),如果没有对数组进行排序,则结果是不确定的,如果数组包含多个带有指定值得元素,则无法保证找到的是哪一个。

int arr[] = new int[]{1,8,9,4,5}; Arrays.sort(arr); int index = Arrays.binarySearch(arr,4); System.out.println("4位置的索引是:" + index);

在这里插入图片描述

返回值“1”是对数组arr进行排序后元素4的索引位置

(2)binarySearch()方法 语法格式:

binarySearch(Object[].,int fromIndex,int toIndex,Object key) fromIndex:指定范围的开始处索引(包括)toIndex:指定范围的结束处索引(不包括)

使用该方法依旧要先进行排序,来获得准确的索引值。 如果要搜索的key包含在数组中,则返回搜索值得索引;否则返回-1或-(插入点)。 如果范围内的所有元素都小于指定的键,则为toIndex(注意,这保证了当且仅当此键被找到时,返回的值将大于等于0)。

注意: 如果指定的范围大于或等于数组的长度,则会报出ArraysIndexOutOfBoundsException异常。

package cn.tedu.test; import java.util.Arrays; public class Test_Swap { public static void main(String[] args) { String[] str = new String[] {"ab","cd","ef","yz"}; Arrays.sort(str); //在指定范围内搜索元素“cd”的索引位置 int index = Arrays.binarySearch(str, 0,2,"cd"); System.out.println("cd的索引位置是:" + index); } }

在这里插入图片描述

总结:

需要注意的是数组的下标是从0开始的,最后一个元素的总是数组名.length - 1…,遍历数组和Arrays类中的各种方法对数组进行操作等。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3