java 定义数组属性_Java数组的定义与使用

一、数组概念

可以将多个同一数据类型的数据,存储到同一个容器中

1. 格式

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

"数据类型"表示该数组中可以存放哪一类型的数据

"[]" 表示当前变量的数据类型为数组类型

"元素个数" 限制了当前数组中可以存放的数据个数

创建数组时,java系统自动设置各个元素的初始值,因此称为静态初始化

数据类型[] 数组名=new 数据类型[]{元素1,元素2,...}

以上方式在创建数组时,设置了各个元素的初始值,因此称为动态初始化.

数据类型[] 数组名={元素1,元素2,...}

以上方式在创建数组时,设置了各个元素的初始值,因此称为动态初始化.同时省掉了new关键字,直接创建数组,称为直接量语法

2. 数组的操作

查询数组中元素:数组名[索引]

修改数组中元素:数组名[索引]=值;

设置数组中的元素:数组名[索引]=值;

删除数组中的元素:数组名[索引]=默认值;

二、 一维数组

1. 声明与初始化

正确的方式:

int num;//声明

num = 10;//初始化

int id = 1001;//声明 + 初始化

int[] ids;//声明

//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行

ids = new int[]{1001,1002,1003,1004};

//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行

String[] names = new String[5];

int[] arr4 = {1,2,3,4,5};//类型推断

2. 一维数组的引用

//数组的角标(或索引从0开始的,到数组的长度-1结束。

names[0] = "王铭";

names[1] = "王赫";

names[2] = "张学良";

names[3] = "孙居龙";

names[4] = "王宏志";//charAt(0)

3. 数组的属性 length

System.out.println(names.length);//5

System.out.println(ids.length);

说明:

数组一旦初始化,其长度就是确定的。arr.length

数组长度一旦确定,就不可修改。

4. 一维数组的遍历

for(int i = 0;i < names.length;i++){

System.out.println(names[i]);

}

5.一维数组元素的默认初始化值

数组元素是整型:0

数组元素是浮点型:0.0

数组元素是char型:0或'\u0000',而非'0'

数组元素是boolean型:false

数组元素是引用数据类型:null

6.一维数组的内存解析

e4e1b9ecb449d25c10d4333173f84076.png

三、二维数组

1.如何理解二维数组?

数组属于引用数据类型

数组的元素也可以是引用数据类型

一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。

2.二维数组的声明与初始化

正确的方式:

int[] arr = new int[]{1,2,3};//一维数组

//静态初始化

int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};

//动态初始化1

String[][] arr2 = new String[3][2];

//动态初始化2

String[][] arr3 = new String[3][];

//也是正确的写法:

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};

int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断

3.如何调用二维数组元素:

System.out.println(arr[1][0]);//2

System.out.println(arr[1][1]);//null

arr3[1] = new String[4];

System.out.println(arr3[1][0]);

System.out.println(arr3[0]);//

4.二维数组的属性:

System.out.println(arr4.length);//3

System.out.println(arr4[0].length);//3

System.out.println(arr4[1].length);//4

5.遍历二维数组元素

for(int i = 0;i < arr4.length;i++){

for(int j = 0;j < arr4[i].length;j++){

System.out.print(arr4[i][j] + " ");

}

System.out.println();

}

6. 二维数组内存解析

059d2a49ba867295628328348d11e253.png

四、数组常见算法

1. 杨辉三角

// 1. 初始化二维而数组

int[][] arr1 = new int[10][];

for (int i = 0; i < arr1.length; i++) {

arr1[i] = new int[i + 1];

// 给每行首位元素赋值

arr1[i][0] = arr1[i][i] = 1;

// 给每行非首位元素赋值

for (int j = 1; j < arr1[i].length - 1; j++) {

arr1[i][j] = arr1[i - 1][j - 1] + arr1[i - 1][j];

}

}

// 遍历二维数组

for (int i = 0; i < arr1.length; i++) {

for (int j = 0; j < arr1[i].length; j++) {

System.out.print(arr1[i][j] + "\t");

}

System.out.println();

}

2. 冒泡排序

int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};

//冒泡排序

for(int i = 0;i < arr.length - 1;i++){

for(int j = 0;j < arr.length - 1 - i;j++){

if(arr[j] > arr[j + 1]){

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

for(int i = 0;i < arr.length;i++){

System.out.print(arr[i] + "\t");

}

五、操作数组的工具类

//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。

int[] arr1 = new int[]{1,2,3,4};

int[] arr2 = new int[]{1,3,2,4};

boolean isEquals = Arrays.equals(arr1, arr2);

System.out.println(isEquals);

//2.String toString(int[] a):输出数组信息。

System.out.println(Arrays.toString(arr1));

//3.void fill(int[] a,int val):将指定值填充到数组之中。

Arrays.fill(arr1,10);

System.out.println(Arrays.toString(arr1));

//4.void sort(int[] a):对数组进行排序。

Arrays.sort(arr2);

System.out.println(Arrays.toString(arr2));

//5.int binarySearch(int[] a,int key)

int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};

int index = Arrays.binarySearch(arr3, 210);

if(index >= 0){

System.out.println(index);

}else{

System.out.println("未找到");

}

六、数组中的常见异常

//1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion

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

//for(int i = 0;i <= arr.length;i++){

//System.out.println(arr[i]);

//}

//System.out.println(arr[-2]);

//System.out.println("hello");

//2.2. 空指针异常:NullPointerException

//情况一:

//int[] arr1 = new int[]{1,2,3};

//arr1 = null;

//System.out.println(arr1[0]);

//情况二:

//int[][] arr2 = new int[4][];

//System.out.println(arr2[0][0]);

//情况三:

String[] arr3 = new String[]{"AA","BB","CC"};

arr3[0] = null;

System.out.println(arr3[0].toString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值