数组
数组
- 数组是相同类型数据的有序集合
- 数组是相同类型的若干个数据,按照一定的先后次序排列组合而成
- 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们(下标都是从0开始的)
- 数组的长度是确定的.一旦被创建.它的大小就是不可以被改变的
- 数组的元素必须是相同类型,不允许出现混合类型
- 数组的元素可以是任何数据类型.包括基本类型和引用类型
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量,数组对象本身是在堆中的
Arrays类
稀疏数组
多维数组
数组的声明与创建
int[] nums;//1.声明一个数组
nums = new int[10];//2.创建一个数组
//3.给数组元素中赋值 没赋值的话Int默认为0,string默认为:null
nums[0] = 1;nums[1] = 2;nums[2] = 3;nums[3] = 4;nums[4] = 5;
nums[5] = 6;nums[6] = 7;nums[7] = 8;nums[8] = 9;nums[9] = 10;
int sum=0;
//获取数组长度:数组名.length
for(int i =0;i<nums.length;i++){//计算数组内值的和
sum += nums[i];
System.out.println(sum);
}
ArraylndexOutOfBoundsException:数组下标越界异常!
数组的使用
int [] arrays = {1,2,3,4,5};
//打印全部的数组元素
for(int i=1;i<length;i++){
System.out.println(arrays[i]);}
}
//计算所有元素的和
int sum = 0;
for(int i=0;i < arrays.length;i++){
sum +=arrays[i];
}System.out.println(sum);
//查找最大元素
int max=arrays[0];
for(int i = 1;i<arrays.length;i++){
if(max<arrays[i]) {
max = arrays[i];
}
}
System.out.println(max);
//没有下标 for -Each循环 适合打印输出 不适合操作数组里面的元素
for (int array : arrays) {
//数组里面的元素 数组
System.out.println(array);
}
//方法调用数组
public static void printArray(int[]arrays){
for(int i = 0;i < arrays.length;i++){
System.out.println(arrays[i]+"");
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int [arrays.length];
for (int i=0,j=result.length-1;i<result.length;i++,j--){
result[j] = arrays[i];}
return result;
}
内存分析
-
堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
-
栈
- 存放基本变量类型以及具体数值
- 引用对象的变量和堆里面的具体地址
-
方法区域
- 可以被所有的线程共享
- 办函了所有的class和static变量
三种初始化
-
静态初始化:创建+赋值
- int [] a ={1,2,3,4,5};//一旦创建就不可更改
-
动态初始化:包含默认初始值
-
int [] a = new int [2];
a[0]=10;//数值没所谓
a[1]=10;
-
-
数组默认的初始化
- 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也按照实例变量同样的方式被隐藏初始化