数组的定义
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每个数据称作一个数组元素,每个数据元素通过下标来访问它。
数组声明创建
- 首先必须声明数组变量,才能在程序中使用数组。如:
int[] nums ;//首选
int nums[];//效果相同,但不是首选方法
- Java通过new 操作符来创建数组。如:
int[] nums = new int[10];
- 数组的元素是通过索引来访问的,数组索引从0开始
- 获取数组的长度:arrays.length。如:
int[] nums = new int[10];
int k = nums.length;
System.out.println(k);//10;
数组的初始化
- 静态初始化
//静态初始化:创建+赋值
int[] a = {10,20,30,40,50};
System.out.println(a[0]);//10
2.动态初始化+默认初始化
//动态初始化:包含默认初始化
//默认初始化: 数值默认为0 字符默认为null
int[] b = new int[10];
b[0]=1;
b[1]=2;
System.out.println(b[0]);//1
System.out.println(b[1]);//2
System.out.println(b[2]);//0
数组的内存分析
- Java内存分析
- 画图分析
注意:
- 没有用new创建数组对象时,声明的数组只存放在栈里面
- 没有给数组赋值的情况下,数组的值会默认初始化:数值为0 字符为null
数组的四个基本特点
- 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 元素的数据类型是相同的,不允许出现混合类型。
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每一个元素相当于该对象的成员变量。数组本身就是对象,Java对象是在堆中的,数组对象本身是在堆中。
数组边界
- 下标的合法边界:[ 0 , arrays.length ];超过会报错
int[] a = {10,20,30,40,50};
for (int i = 0; i <= a.length; i++) {
System.out.println(a[i]);
}
运行结果:
重点总结:
- ArrayIndexOutOfBoundsException:数组下标越界异常
- 数组是相同数据类型的有序集合
- 数组也是对象。数组元素相当于对象的成员变量
- 数组的长度是确定的,不可以改变的,如果越界就会报错。
数组的使用
- For-Each循环
package com.wu.array;
public class arrayDemo3 {
public static void main(String[] args) {
int[] nums = {10,20,30,40,50};
//打印出每一个数组元素
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
System.out.println("==============");
//输出数组元素的和
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
System.out.println("sum="+sum);
System.out.println("=============");
//输出最大值
int max = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i]>max){
max = nums[i];
}
}
System.out.println("Max="+max);
System.out.println("==============");
//增强for循环输出数组的每一个元素 没有下标
for (int num : nums) {
System.out.println(num);
}
}
}
输出结果:
2. 数组作为方法入参
package com.wu.array;
public class arrayDemo4 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6};
printArrays(nums);
}
//打印数组元素
public static void printArrays(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
}
输出结果:
- 数组作为返回值
package com.wu.array;
public class arrayDemo5 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6};
int[] re = reverse(nums);
for (int i = 0; i < re.length; i++) {
System.out.print(re[i]+" ");
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
//反转操作
for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) {
result[j] = arrays[i];
}
return result;
}
}
输出结果:
多维数组
定义:多维数组可以看成是数组的数组,比如说二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 画图展示:
代码展示:
package com.wu.array;
public class arrayDemo6 {
public static void main(String[] args) {
int[][] array = new int[3][2];
int[][] nums = {{1,2},{3,4},{5,6}};
}
}
附加,如果你要打印出来这个二维数组:
package com.wu.array;
public class arrayDemo6 {
public static void main(String[] args) {
int[][] array = new int[3][2];
int[][] nums = {{1,2},{3,4},{5,6}};
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
}
}
输出结果: