数组
1、数组概述
相同类型数据的一个有序集合
每个数据称为一个数组元素,每个元素可以通过下标访问他们
数组特点:
- 数组长度是确定的,如果越界:ArrayIndexOutoBounds(表示数组越界)
- 数组内不允许混合类型
- 数组的变量属于应用类型
- 数组的元素可以是任意类型
- 数组对象本身在堆中
下标合法区间;[0,arr.length-1],注意数组下标越界
2、数组声明创建
两种声明方法:第一个方法首选
int[] nums;//声明一个数组
int num2[];
定义一个什么数组,就new一个怎么样的数组
int[] nums;//定义
nums=new int[10];//可以存放10个int类型的元素
int[] num1={1,2,3,4,5,6,7,8,9,10};//给数组赋值
3、数组使用
数组初始化
不同数据默认的初始化
数据类型 | 默认初始化值 |
---|---|
byte,short,int,long | 0 |
float ,double | 0.0 |
char | 一个空字符,即‘\u0000’ |
boolean | false |
引用数据类型(string…) | null,表示变量不引用任何对象 |
1、静态初始化
int [] a={1,2,3,4,5,6};//创建+赋值
2、动态初始化
int [] b=new int [10];
b[0]=10;
······
动态初始化包含默认值。
3、打印数组元素
int []num={1,2,3,4,5};
for (int i=0;i<num.length;i++)
{
System.out.println(num[i]);
}
4、数组作为方法入参
public static void printArray(int []arrays)
{
for(int i=0;i<arrays.length;i++)
System.out.print(arrays);
}
5、数组作返回值
//反转数组
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;
}
4、多维数组
相当于数组的数组
1、声明
int [][] array=[2][5];
//表示两行五列的二维数组
2、数组遍历
//多维数组
int [][] array={{1,2},{3,4},{6,5},{57,8}};
for (int i=0;i<array.length;i++)
{
for(int j=0;j<array[i].length;j++)
{ System.out.print(array[i][j]+" ");}
}
5、Arrays类(操作数组的类)
数组工具类:java.util.Arrays
java本身提供给Array类使用
public static void main(String[] args) {
int[] array = {5, 5, 1, 8, 844, 51, 1, 54, 1, 4, 7};
Arrays.sort(array);//数组排序
System.out.println(Arrays.toString(array));//打印数组
}
常用方法
(12条消息) Arrays类常用方法详解_LMY____梦阳� � �的博客-CSDN博客_arrays
6、稀疏数组
增强for循环
public static void main(String[] args) {
int [][]array=new int[11][11];
array[1][2]=1;
array[2][3]=1;
for(int i[]:array)//遍历数组元素外层
{
for (int arr:i)//遍历数组元素内层
{
System.out.print(arr+"\t");
}
System.out.println();
}
}
压缩数组,便于保存
当数组大部分元素是0,或者为同一个值的时候,可以用稀疏数组保存该数组
处理方式
- 记录数组几行几列,多少个不同的值
- 把具有不同的值的元素和行列存放在一个小规模的数组中
7、内存分析
- 堆:存放new的对象和数组
- 栈:存放基本变量类型
- 方法区