Java中数组的详细介绍

Java中数组的详细介绍

一:数组的概述

数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组。使用java数组,必须经过两个步骤,声明数组和分配内存给该数组。数组中的数据类型可以是基本数据类型,也可以是引用数据类型。

1.一维数组

一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的。

2.二维数组

如果可以把一维数组当做几何中的一条线图形,那么二维数组就相当于一个表格(有XY轴)。

3.多维数组

如果可以把一维数组当做几何中的一条线图形,二维数组就相当于一个表格,多维数组可以相当于多维空间。java中没有 多维数组,只有数组的数组,即有一个数组中的每一个元素又是一个数组。

二:数组的声明、创建、初始化

1.数组的声明【声明数组时不能指定其长度(数组中元素的个数)】

a.一维数组

int[] IArray 或者 int IArray[]     基本数据类型数组,数组中存放的是基本数据类型。

Teacher[] tArray 或者 Teacher tArray[]    类类型数组,数组中存放的是Teacher类创建的若干个的对象。

b.二维数组

int[][] IArray 或者 int IArray[][]

Teacher[][] tArray 或者 Teacher tArray[][] 

c.多维维数组【多维数组不常用,了解就好】

int[]……[] IArray 或者 int IArray[]……[]

Teacher[]……[] tArray 或者 Teacher tArray[]……[] 

2.数组的创建【Java中使用关键字new创建数组对象】

格式为:

IArray  = new int [5]    一维数组

IArray  =new int[5][5]  二维数组

IArray  =new int[5]……[5]  多维维数组

注释:二维多维数组的创建方式跟一位创建方式一致

3.数组的初始化

数组的初始化可以分为动态初始化、静态初始化和默认初始化。

a.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
b.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
c.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。

A:动态初始化

    int a[] ;       //声明
    a = new int[3] ;//创建  
    a[0] = 0 ;      //初始化
    a[1] = 1 ;  
    a[2] = 2 ;  

B:静态初始化

     int a[] ;       //声明
     a = new int[]{0,1,2};  //创建、初始化

C:默认初始化【默认初始化,赋值为该类型的默认值】

     int a [] = new int [5] ;     
     System.out.println("" + a[3]) ; //输出的值为0

二维跟多维的案例,我就不做演示了。

注意:数组的声明、创建、初始化可以一步完成

例如:int a[] =new int[]{0,1,2}  //声明、创建、初始化

三:数组的常用方法

1.打印数组中的元素Arrays.toString(数组)
int[] intArray = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(intArray));
   
2.查看数组中是否存在某个值Arrays.asList(数组)将Array转换成List<String>,contains函数来判断元素是否存在
String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);


四:ArrayUtils工具类的常用方法

1.toString:将一个数组转换成String,用于打印数组
String [] stringarr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.toString(stringarr));
打印结果:{爷爷,奶奶,姥姥,姥爷}

2.isEquals:判断两个数组是否相等,采用EqualsBuilder进行判断
String[]stringArr1=new String[]{"爷爷","奶奶","姥姥","姥爷"};
String[]stringArr2=new String[]{"爷爷","奶奶","姥姥","姥爷1"};
System.out.println(ArrayUtils.isEquals(stringArr1, stringArr2));
打印结果:false

3.toMap:将一个数组转换成Map,如果数组里是Entry则其Key与Value就是新Map的Key和Value,如果是Object[]则Object[0]为KeyObject[1]为Value
String [][] stringarr=new String[][]{{"0","爷爷"},{"1","奶奶"},{"2","姥姥"},{"3","姥爷"}};
System.out.println(ArrayUtils.toMap(stringarr).get("0"));
System.out.println(ArrayUtils.toMap(stringarr).get("2"));
打印结果:

爷爷
姥姥

4.clone:拷贝数组
String [] stringarr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.toString(ArrayUtils.clone(stringarr)));
打印结果:{爷爷,奶奶,姥姥,姥爷}

5.subarray:截取子数组
String [] stringarr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.toString(ArrayUtils.subarray(stringarr, 0, 2)));
打印结果:{爷爷,奶奶}
            
6.isSameLength:判断两个数组长度是否相等
String[]stringArr1=new String[]{"爷爷","奶奶","姥姥","姥爷"};
String[]stringArr2=new String[]{"爷爷","奶奶","姥姥","姥爷1"};
String[]stringArr3=new String[]{"爷爷","奶奶","姥姥"};
System.out.println(ArrayUtils.isSameLength(stringArr1, stringArr2));
System.out.println(ArrayUtils.isSameLength(stringArr1, stringArr3));
打印结果:
true
false

7.getLength:获得数组的长度
String[]stringArr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.getLength(stringArr));
打印结果:4

8.isSameType:判段两个数组的类型是否相同
String[]stringArr1=new String[]{"1","2","3","4"};
String[]stringArr2=new String[]{"1","2","3","4"};
int[]intArr2=new int[]{1,2,3,4};
System.out.println(ArrayUtils.isSameType(stringArr1, stringArr2));
System.out.println(ArrayUtils.isSameType(intArr2, stringArr2));
打印结果:
true
false

9.reverse:数组反转
String[]stringArr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
ArrayUtils.reverse(stringArr);
System.out.println(ArrayUtils.toString(stringArr));
打印结果:{姥爷,姥姥,奶奶,爷爷}

10.indexOf:查询某个Object在数组中的位置,可以指定起始搜索位置,如果没有该值则返回-1
String[]stringArr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.indexOf(stringArr, "爷爷", 0));
System.out.println(ArrayUtils.indexOf(stringArr, "爷", 0));
打印结果:
0
-1

11.lastIndexOf:反向查询某个Object在数组中的位置,可以指定起始搜索位置
String[]stringArr=new String[]{"爷爷","奶奶","姥姥","姥爷"};
System.out.println(ArrayUtils.lastIndexOf(stringArr, "爷爷", 0));
System.out.println(ArrayUtils.lastIndexOf(stringArr, "爷", 0));
打印结果:
0
-1

12.contains:查看数组中是否存在某个值Arrays.asList(数组)将Array转换成List<String>,contains函数来判断元素是否存在
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷" };
boolean b = Arrays.asList(stringArray).contains("爷爷");
System.out.println(b);
打印结果:true

13.toObject:将基本数据类型转换成外包型数据
int[]intArr2=new int[]{1,2,3,4};
System.out.println(ArrayUtils.toString(ArrayUtils.toObject(intArr2)));
打印结果:{1,2,3,4}

14.isEmpty:判断数组是否为空(null和length=0的时候都为空)
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷" };
System.out.println(ArrayUtils.isEmpty(stringArray));
打印结果:false

15.addAll:合并两个数组【数组间类型要一致】
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷" };
String[] stringArray1 = {"1","2","3","4" };
System.out.println(ArrayUtils.toString(ArrayUtils.addAll(stringArray, stringArray1)));
打印结果:{爷爷,奶奶,姥姥,姥爷,1,2,3,4}

16.add:添加一个数据到数组
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷" };
System.out.println(ArrayUtils.toString(ArrayUtils.add(stringArray, "姑姑")));
打印结果:{爷爷,奶奶,姥姥,姥爷,姑姑}

17.remove:删除数组中某个位置上的数据
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷","姥姥" };
System.out.println(ArrayUtils.toString(ArrayUtils.remove(stringArray,2)));
打印结果:{爷爷,奶奶,姥爷}

18.removeElement:删除数组中某个对象(从正序开始搜索,删除第一个)
String[] stringArray = {"爷爷","奶奶","姥姥","姥爷","姥姥" };
System.out.println(ArrayUtils.toString(ArrayUtils.removeElement(stringArray,"姥姥")));
打印结果:{爷爷,奶奶,姥爷,姥姥}

猜你喜欢

转载自blog.csdn.net/tian_tian2/article/details/78092391