Java数组
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
- 通过下标访问数组元素,从0开始
Java数组声明创建
-
首先必须声明数组变量,才能使用数组
dataType[] arrayRefVar;//推荐使用 或 dataType arrayRefVar[];//效果一样 //Java使用new创建数组 dataType[] arrayRefVar = new dataType[arraySize];
-
数组的元素是通过索引访问,从下标0开始
-
获取数组的长度
arrays.length
-
//简单示例 public class Demo01 { public static void main(String[] args) { //变量的类型 变量的名字 = 变量的值; //数组类型 int[] nums;//定义 nums = new int[10];//创建一个数组 //简便写法 // int[] nums2 = new int[10]; //3.给数组赋值 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; // System.out.println(nums[0]); int sum = 0; for (int i = 0; i < nums.length; i++) { sum = sum+nums[i]; } System.out.println(sum); } }
Java 内存分析
-
堆:一、存放new的对象和数组 二、可以被所有的线程共享,不会存放别的对象引用
栈:一、存放基本变量类型(会包含这个基本类型的具体数量) 二、引用对象的变量(会存放在这个引用在堆里面的具体地址)
方法区:一、可以被所有的线程共享 二、包含了所有的class和static变量
在堆中:声明数组是在栈中声明
int[] array = null;
创建数组
array = new int[10];
创建数组是在堆中创建,在堆中开辟空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KG7mMPNC-1600595845725)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20200920142547825.png)]
在数组中赋值
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; //java.lang.ArrayIndexOutOfBoundsException: //出现这种报错是表明数组越界
赋值后的堆空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wvFJQol-1600595845727)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20200920143339272.png)]
Java数组初始化
-
静态数组初始化
int[] a= {1,2,3,4,5,6,7,8};
-
动态初始化
int[] b = new int[10]; b[0]= 1;
-
数组默认初始化
数组为引用类型,它的元素相当与类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
Java数组的使用
-
for-Each循环
public class Demo02 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; for (int array : arrays){ System.out.println(array); } } }
-
数组作为方法入参、数组作返回值
package com.DL.array;
public class Demo03 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
int[] reverse = reverse(arrays);
printArray(reverse);
}
//数组反转
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;
}
//数组传入
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
}
}
# Java二维数组
1. 二维数组可以看作是数组的数组
```java
package com.DL.array;
public class Demo04 {
public static void main(String[] args) {
//二维数组
/*
*/
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
for (int i = 0;i<array.length;i++){
for (int j= 0;j<array[i].length;j++){
System.out.print(array[i][j]);
}
}
}
}
ray.length;i++){
for (int j= 0;j<array[i].length;j++){
System.out.print(array[i][j]);
}
}
}
}