数组,就是容器,只能存放相同类型的数据;
数据类型[] 数组名 = 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]); } } }
堆: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!
获取更多技术干货