java数组介绍

java数组与C系列语言是类似的,数组的每个元素必须是相同的数据类型(强类型语言都是这样的要求,这与PHP有很大的不同,因为PHP的数组是数组与map的并集)

一.java数组的声明与定义

1.数组的定义

原型

  1. 数据类型[] 数组变量名;

如:

  1. int[] num;

或者:

  1. 数据类型 数组变量名[];

如:

  1. int num[];

个人推荐第一种命名方法,因为某个数组是数据元素类型与数组的一起组合的一个新的数据类型,数据类型和数组是一个整体,即int[]是一个新的数据类型,即一个整型数组

二.java数组的初始化与赋值

1.java数组的初始化

数组定义后必须先初始化才能使用.

(1)声明时同时初始化
  1. int[] num = {1, 2, 3};
(2)先声明再初始化
  1. int[] num;
  2. num = new int[3];
2.java数组赋值

java数组是一个整体,只有在初始化时统一赋值,其他情况下不能统一赋值,只能为每个元素单独赋值

  1. int[] num = new int[3];
  2. //单独逐个赋值
  3. num[0] = 3;
  4. num[1] = 2;
  5. num[2] = 10;
  6. for (int i = 0; i< 3; i++) {
  7. num[i] = i *3;
  8. }
3.数组元素的默认值
  • 数组的默认值是根据数组元素的数据类型的默认值来确定的,如int[]类型的数组,它元素的默认值就是0

三、数组的属性和方法

1.数组对象的属性
  • length : 存储数组的长度
2.数组复制

通过system包的arraycopy这个底层方法来实现

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

  • src:被复制的源数组
  • srcPos:开始复制的位置
  • dest:复制的目的数组(即将源数组的数据复制到哪个数组对象上)
  • destPos:复制的元素存入的位置
  • length:复制的长度
  1. int[] studentsNo = new int[]{5, 8, 7, 9, 3, 1, 10};
  2. int[] newStudents = new int[]{25, 29, 21};
  3. System.arraycopy(newStudents, 0, studentsNo, 4, 3);
  4. for (int i = 0; i<studentsNo.length; i++) {
  5. System.out.print(studentsNo[i]+",");
  6. }
  7. //原数据:5, 8, 7, 9, 3, 1, 10
  8. //新数据:5, 8, 7, 9, 25,29, 21 (因为目的数组长度是固定的,所以就将相应的位置元素替换成新元素了)
3.数组工具类的方法即Arrays的方法
(1)binarySearch
  • 作用:二分法查找某个元素在数组中的索引值
  • 原型:binarySearch(Object[] arrayObj, Object element)
  • 参数说明:
    • : arrayObj : 数组对象
    • : element : 查找的元素对象
  • 返回值:返回查找的元素在数组中的索引值,类型为int
    • : 当返回值大于等于0时,即为查找的索引位置值
    • : 当返回值小于0时,表示未查找到
  1. int[] num = [158, 7, 2, 35, 48, 29];
  2. int index = Arrays.binarySearch(num);
(2)fill
  • 作用:使用某个指定的值对数组进行填充(即数组的每个元素都是指定的值)
  • 原型:fill(Object[] arrayObj, int val)
  • 参数说明:
    • : arrayObj : 数组对象
    • : val : 填充的值
  1. int[] num = new int[5];
  2. Arrays.fill(num, 18)
(3)sort
  • 作用:对指定对象数组根据其元素的自然顺序进行升序排列
  • 原型:sort(Object[] arrayObj)
  • 参数说明:
    • : arrayObj : 排序的数组对象