Java入门数组实例分析(java,开发技术)

时间:2024-05-03 18:13:23 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

认识数组

数组的定义

数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。

数组的四个基本特点

  • 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。

  • 其元素的类型必须是相同类型,不允许出现混合类型。

  • 数组类型可以是任何数据类型,包括基本类型和引用类型。

  • 数组有索引的:索引从0开始,到 数组.length-1结束

  • 数组变量属于引用类型,数组也是对象。

PS:数组变量属于引用类型,数组也是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。

Java入门数组实例分析

数组下标从0开始

arr[0] == 12

arr[1] == 6

arr[2] == 27

…

arr[5] == 43

数组的初始化

数组的初始化方式总共有三种:默认初始化、静态初始化、动态初始化。

默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

int[]arr=newint[3];//数组有默认的初始化值

基本数据类型数组的默认值:

byte[] : 0

short[] : 0

cahr[] : ‘\u0000’

int[] : 0

long[] : 0

float[] : 0.0

double[] : 0.0

boolean[] : false

引用数据类型数组的默认值:null

静态初始化

除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。

int[]arr={12,23,45};int[]arr=newint[]{12,23,45};

动态初始化

数组定义与为数组元素分配空间并赋值的操作分开进行。

int[]arr;arr=newint[3]arr[0]=12;arr[1]=23;arr[2]=45;

数组有关的问题

数组的遍历

两种方法

publicclassTestCode04{publicstaticvoidmain(String[]args){int[]arr1=newint[]{1,2,3,4,5};int[]arr2={5,4,3,2,1};//方式1,使用普通for循环//arr1.length获取数组长度的方法for(inti=0;i<arr1.length;i++){System.out.print(arr1[i]+"");}System.out.println();//方式2,使用增强for循环for(inta:arr2){System.out.print(a+"");}}}

求最值问题

问题:给定一个数组int[] arr = {3,5,6,17,26,9,0,7}; ,求出数组中最大的数

publicclassTestCode05{publicstaticvoidmain(String[]args){int[]arr={3,5,6,17,26,9,0,7};intmax=arr[0];//假设最大元素为数组arr[0]位置上的数//然后依次向后比较for(inti=1;i<arr.length;i++){//因为max=arr[0];可以从arr[1]位置开始比较if(arr[i]>max){max=arr[i];}}System.out.println(max);}}

查询子元素

查询指定位置元素

给定一个数组,查询索引位置为2上的元素

publicclassTestCode06{publicstaticvoidmain(String[]args){int[]arr={3,5,6,17,26,9,0,7};//直接输出arr[2];System.out.println(arr[2]);//输出-->6}}

上面代码体现了数组的一个优点:在按照位置查询的时候,直接一步到位,效率非常高

查询指定元素的位置&ndash;>找出元素对应的索引

publicclassTestCode07{publicstaticvoidmain(String[]args){//查询指定元素的位置-->找出元素对应的索引//给定一个数组:int[]arr={12,34,56,7,3,56};//012345//功能:查询元素12对应的索引:intindex=-1;//这个初始值只要不是数组的索引即可for(inti=0;i<arr.length;i++){if(arr[i]==12){index=i;//只要找到了元素,那么index就变成为ibreak;//只要找到这个元素,循环就停止}}if(index!=-1){System.out.println("元素对应的索引:"+index);}else{//index==-1System.out.println("查无此数!");}}}

Arrays工具类

为了方便我们对数组进行操作,系统提供一个类Arrays,我们将它当做工具类来使用。

下面通过代码演示Arrays类中常用的方法:

Arrays.toString(arr);//对数组进行遍历查看,返回的是一个字符串

Arrays.sort(arr);//对数组进行排序 -->升序

Arrays.copyOf(arr,index);//对数组的复制

Arrays.copyOfRange(arr,startindex,endindex);//区间复制

Arrays.equals(arr1,arr2);//比较两个数组的值是否一样

Arrays.fill(arr,1);//数组填充

importjava.util.Arrays;publicclassTestCode08{publicstaticvoidmain(String[]args){//给定一个数组:int[]arr={1,3,7,2,4,8};//toString:对数组进行遍历查看的,返回的是一个字符串System.out.println(Arrays.toString(arr));//binarySearch:二分法查找:找出指定数组中的指定元素对应的索引://这个方法的使用前提:一定要查看的是一个有序的数组://sort:排序-->升序Arrays.sort(arr);System.out.println(Arrays.toString(arr));System.out.println(Arrays.binarySearch(arr,4));int[]arr2={1,3,7,2,4,8};//copyOf:完成数组的复制:int[]newArr=Arrays.copyOf(arr2,4);System.out.println(Arrays.toString(newArr));//copyOfRange:区间复制:int[]newArr2=Arrays.copyOfRange(arr2,1,4);//[1,4)-->1,2,3位置System.out.println(Arrays.toString(newArr2));//equals:比较两个数组的值是否一样:int[]arr3={1,3,7,2,4,8};int[]arr4={1,3,7,2,4,8};System.out.println(Arrays.equals(arr3,arr4));//trueSystem.out.println(arr3==arr4);//false==比较左右两侧的值是否相等,比较的是左右的地址值,返回结果一定是false//fill:数组的填充:int[]arr5={1,3,7,2,4,8};Arrays.fill(arr5,10);System.out.println(Arrays.toString(arr5));}}

二维数组

本质上全部都是一维数组

二维数组初始方式

  • 静态初始化

int[][]arr={{1,2},{4,5,6},{4,5,6,7,8,9,9}};int[][]arr=newint[][]{{1,2},{4,5,6},{4,5,6,7,8,9,9}};
  • 动态初始化

int[][]arr=newint[3][];//本质上定义了一维数组长度为3,每个“格子”中放入的是一个数组arr[0]=newint[]{1,2};arr[1]=newint[]{3,4,5,6};arr[2]=newint[]{34,45,56};
  • 默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

int[][]arr=newint[3][3];//定义一个3*3的二维数组,默认值为0

二维数组的遍历

两个for循环

for(inti=0;i<arr.length;i++){for(intj=0;i<arr[i].length;j++){System.out.print(arr[i][j]+"");}System.out.println();//换行}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java入门数组实例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:go语言定时器Timer及Ticker怎么使用下一篇:

26 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18