概念
数组,就是容器,只能存放相同类型的数据;
数组的格式
数据类型[] 数组名 = new 数据类型 [数组的容量];
double[] scores = new double[100];
数组声明缩写
int[] arr={1,2,3,4};
数组中元素的存取
int[] arr = new int[3];
arr[0] = 1; // 给数组第一个元素赋值
arr[1] = 2; // 给数组第二个元素赋值
arr[2] = 3; // 给数组第三个元素赋值
// 打印赋值结果
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
总结:数组元素的存放和取出,都是通过数组的索引实现的;
数组的遍历
class test_数组的遍历 {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6, 7};
// 通过访问 length 属性获取数组的长度
// 格式: 数组名.length
System.out.println(array.length);
// i 从 0 开始, 因为数组下标从 0 开始
// 循环判断条件: i < 数组的长度
// 循环变量增量: 每次循环结束索引值 +1: i++
for(int i = 0; i < array.length; i++){System.out.println(array[i]);
}
}
}
java 的内存组成
堆:new 出的对象在堆上
java 栈:java 程序、线程运行数据、内存数据
每个方法都有自己的栈、运行时需要的数据存在自己的栈中
每个线程对立的是图中浅蓝色的部分(java 栈、本地方法栈、程序计数器)
堆和方法区是所有线程共享的
java 栈会对调用的每个方法生成一个栈帧
数组的内存图解
一维数组内存图解
二维数组内存图解
引用传递和按值传递
public class reference{public static void main( String[] args){int[] arr=new int[3];
int[] array=arr;
array[0]=2;
System.out.println(arr[0]);//2 引用传递
int a=10;
int b=a;
b=20;
System.out.println(a);//10 值传递
}
}
引用类型的变量进行传参,实际传递的是保存在变量中指向堆中空间的地址,这种传参情况叫做引用传递;
如果一个引用改变了空间中的值,对所有指向这个空间的引用都有影响;
基本类型的变量进行传参,实际传递的保存在变量中的常量值,这种情况叫做值传递;
如果改变一个变量的值,对其他的变量没有影响;
数组的特点
数组,是一个容器,可以存放相同类型的数据;
数组有容量大小,使用 length 属性可以获取,方法是:数组名.length;
数组一旦创建,容量大小就固定不变;
数组中的元素都有索引,对数组元素的操作就是通过索引实现的;
索引的特点是,从 0 开始,连续递增,最大值是数组容量减一;
什么时候使用数组?
1. 在数据量比较多,而且还是相同类型的;
2. 数据量是确定的,不确定,就不知道该创建多大的数组装;
3. 数据可以有顺序的,可以通过索引来操作的;
不满足以上条件,但是同样数据量比较大,该怎么办呢?使用集合;
二维数组
声明一个二维数组:使用符合 [][] 表示;
数据类型[][] 数组名 =new 数据类型二维数组的容量
int [] [] array = new int[3][2];
声明时可直接赋值
int [] [] array = new int[][]{{1,2},{3,4,5},null};
开源地址
开源项目地址:https://github.com/371854496/…
java 学习资料:https://github.com/371854496/…
各位觉得还阔以的话,点下 Star, 分享不易,thank you!
公众号 全战开花
获取更多技术干货