目录

1.数组定义:

2.一维数组的声明与创建:

3.数组的初始化:

4.数组的内存分析:

5.数组变量

6.二维数组

7.数组常用方法


1.数组定义:

容器

特点:

  • 容器
  • 其中所有元素具有相同数据类型
  • 一旦创建,大小不能改变

2.一维数组的声明与创建:
 

1.元素类型【 】 数组名 = new 元素类型【元素个数或者数组长度】;

2.元素类型 【 】数组名= new 元素类型【 】{元素,元素,元素……};

3.元素类型【 】数组名={元素,元素,元素……};

Eg:

int []arr=new int[5];
int [] arr=new int[]{1,3,5};
int []arr={1,4,6};

注意:

  • 给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用length 属性获取数组的大小。
  • 数组下标最小是:0;数组下标最大是:数组元素-1。
  • 数组大小可以由变量确定,但是变量在此之前必须赋值。
  • 数组.length可以获取数组大小。

如下是数组下标越界异常报错:

java定义数组怎么给数组长度 java定义数组大小_java定义数组怎么给数组长度

3.数组的初始化:

(1)方法一:

int []arr=new int [5];//此时数组默认值为0
arr[0]=1;
arr[1]=4;//数组初始化

(2)方法二:

int[] arr = new int[]{3,5,1,7};//第二种方式:创建并初始化数组

(3)方法三:

int[] arr = {3,5,1,7};//第三种方式:创建并初始化数组

此外,补充由变量确定数组大小代码:

scanner sc=new Scanner(System.in);
int cnt=0;
cnt=sc.nextInt();
if(cnt>0){
 int [] numbers=new int[cnt];
  for(int i=0;i<cnt;i++){
   numbers[i]=sc.nextInt();
    }
}

4.数组的内存分析:

java定义数组怎么给数组长度 java定义数组大小_数组_02

arr1和arr2都只是数组的管理者(称为数组变量),而不是所有者,它们都指向同一个堆内存。

5.数组变量

  • 数组变量是数组的管理者,而非数组本身
  • 数组必须创建出来然后交给数组变量来管理
  • 数组变量之间的赋值是管理权限的赋值
  • 数组变量之间的比较是否判断管理同一数组

Eg:

package second;
import java.util.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
      Scanner sc=new Scanner(System.in);
      int[]a= {1,2,3};
      int []b= {1,2,3};
      System.out.println(a==b);
	}

}

java定义数组怎么给数组长度 java定义数组大小_数组_03

6.二维数组

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

int[][] arr1 = { {1,2,3},{4,5,6} };
int[][] arr2 = new int[][] { {1,2,3},{4,5,6} };
int[][] arr3 = new int[2][3];
int[][] arr4 = new int[2][];

注:遍厉二维数组每一个元素:

int [][]a=new int [10][9];
for(int i=0;i<a.length;i++){
   for(int j=0;j<a[i].length;j++){
     a[i][j]=in.nextInt();
     }
}

7.数组常用方法

在使用前要导入包:

import java.util.Arraya;

或者:

import java.util.*;

方法

作用

Arrays.toString(数组名);

Arrays.deepToString( 数组名);

将一维数组变为字符串;

将二维数组变为字符串;

Arrays.copeOf(要复制的数组名,要返回的副本的长度);

从下标0开始复制指定长度数组的内容到新数组;

Arrays.copeOfRange(要复制的数组名,复制范围初始下标,复制范围最终下标不包括它);左闭右开

拷贝指定范围数组;

Arrays.sort(数组名);

对数组进行排序;

Arrays.fill(要填充的数组名,要储存的元素);

Arrays.fill(要填充的数组名,填充初始下标,填充最后下标不包含它,要储存的元素);左闭右开

对数组内容进行填充;

Arrays.equal(数组名1,数组名2);

判断两个数组的内容是否相同

Arrays.binarySearch(要搜索的数组名,搜索第一个元素的下标,搜索的最后一个元素的下标,要搜索得值);左闭右开

二分查找数组内容,使用前先sort排序数组。

1
public static void main(String[] args) {
    int[] array = new int[] { 1,2,3,4 };
    System.out.println(Arrays.toString(array));//[1,2,3,4]
}


2
public static void main(String[] args) {
    int[] array = new int[] { 1,2,3,4 };
    int[] ret = Arrays.copyOf(array,2);
    System.out.println(Arrays.toString(ret));//[1,2]
}


3
public static void main(String[] args) {
    int[] array = new int[] { 1,2,3,4 };
    int[] ret = Arrays.copyOfRange(array,2,4);
    System.out.println(Arrays.toString(ret));//[3,4]
}


4
public static void main(String[] args) {
    int[] array = new int[] { 4,3,2,1 };
    Arrays.sort(array);
    System.out.println(Arrays.toString(array));//[1,2,3,4]
}


5
public static void main(String[] args) {
    int[] array = new int[10];
    Arrays.fill(array,10);
    Arrays.fill(array,2,8,20);
    System.out.println(Arrays.toString(array));
}


6
public static void main(String[] args) {
    int[] arr1 = new int[] { 4,3,2,1 };
    int[] arr2 = new int[] { 1,2,3,4 };
    int[] arr3 = new int[] { 1,2,3,4 };
    System.out.println(Arrays.equals(arr1, arr2));//false
    System.out.println(Arrays.equals(arr2, arr3));//true
}


7 
public static void main(String[] args) {
    int[] arr1 = new int[] { 4,3,2,1 };
    System.out.println(Arrays.binarySearch(arr1, 3));//下标是1
}