数组
由多个相同类型数据按一定顺序排列的集合,并用一个名字命名,并且通过编号的方式对这些数据进行统一管理
-
特征
-
数组名
-
下标(或索引),内数据有序排列
-
元素
-
数组的长度
-
-
分类
- 维数:一维数组、二位数组等
- 数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
-
使用
//初始化 /* 里面元素是整型(int):0 里面元素是浮点型(float/double):0.0 里面元素是char型:0或者'\u0000',不是'0'! 里面元素是boolean型:False 里面元素是引用数据类型(例如String):Null */ //声明 int[] ids; //静态初始化 ids = new int[]{1,2,3,4}; //动态初始化 String[] names = new String[5]; //错误示范 int[] arr1 = new int[]; // 没有定义数组大小 int[5] arr2 = new int[5]; // 重复 int[] arr3 = new int[3]{1,2,3}; // 数组‘超载’ //调用 arr3[0]; //获取数组长度 arr_names,length; //遍历 for(int i = 0; i<arr_names,length;i++){ System.out.println(arr_names[i]); }
-
C++的引申
int a[10]和int a=new int[10]]的区别*
-
int a[10]使用简单,系统会自动进行内存分配与回收。
-
int* a = new int[10]需要判断内存是否分配成功,需要搭配delete[] a进行手动释放。
-
如果要分配大量空间,例如1w,只能用 int* a=new 。
因为int a[] 这种方式,内存是存放在栈上。int* a = new 内存是放在堆上
栈是连续内存/堆是非连续内存
可分配空间少/可分配空间大
注意:这里指的是单个new,多个new出来的就不是连续内存了
-
两者相比,后者有动态分配内存的优势。
-
-
内存结构说明
看到网上有文章讲的比视频还详细