Java数组
一.什么是数组
数组是相同类型数据的集合
其中每一个数据称为数组元素,我们可以通过数组下标访问他们
二.数组声明和创建
2.1数组声明
第一种方法:变量类型[] 变量名称 int[] numbers
第二种方法:变量类型 变量名称[] int numbers[]
推荐第一种
2.2创建数组
变量名称 = new 数组类型[长度] nunbers = new int[10]
可写为一句
int[] numbers = new int[10]
三.访问数组元素,获取数组长度,越界问题
3.1通过下标进行访问:numbers[0]
3.2获取数组长度:numbers.length
3.3数组越界:
数组下标的合法区间是[0,length-1],超出这个范围会出现越界错误:ArrayIndexOutOfBoundsException
public class World {
public static void main(String[] args) {
//声明创建数组
int[] numbers = new int[5];
//给数组赋值
numbers[0] =1;
numbers[1] =2;
numbers[2] =3;
numbers[3] =4;
numbers[4] =5;
//访问数组元素
System.out.println(numbers[2]);
//获取数组长度
System.out.println(numbers.length);
//下标越界
System.out.println(numbers[5]);
}
}
- 数组长度确定后,不能修改
- 同一数组内数组元素类型都相同,数组是相同类型数据的有序结合
- 数组也是对象,数组元素相当于成员变量
四.数组内存分析及三种初始化
4.1 内存分析
首先简单了解栈和堆:
堆:存放new的对象和数组
栈:存放基本变量类型
下图分析当我们创建一个数组时内存简单变化过程:
4.2初始化方法
package com.li.www;
public class World {
public static void main(String[] args) {
//静态初始化:创建 + 赋值
int[] a ={1,2,3,4,5};
System.out.println(a[1]); //输出结果为:2
//动态初始化,包含第三种默认初始化
int[] b = new int[5]; //堆中存在五个空间,都为默认值0
b[0] = 6;
System.out.println(b[0]); //输出结果为:6
System.out.println(b[1]); //输出结果为:0
}
}
五.数组使用
5.1 for each循环
public class World {
public static void main(String[] args) {
//静态初始化:创建 + 赋值
int[] a ={1,2,3,4,5};
//for each遍历数组元素,jdk1.5以上
for (int b : a
) {
System.out.println(b);
}
}
}
5.2数组作为方法参数
public class World {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
printArray(arrays);
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0;i < arrays.length; i++){
System.out.println(arrays[i]);
}
}
}
5.3数组做返回值
public class World {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
int[] rev = reverse(arrays);
printArray(rev);
//System.out.println(res);
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
//反转操作
for (int i = 4,j = 0;i >= 0; i--,j++){
result[j] =arrays[i];
}
return result;
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0;i < arrays.length; i++){
System.out.println(arrays[i]);
}
}
}
六.多维数组
多维数组可以看成时数组的数组
例如二维数组:
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
/*
相当于4行2列
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/