目录
数组(Array)
一、数组概念
数组:
- 普通的讲:一组数
- 本质上:数组是一个容器,用来装数据
数组(array)的定义:(了解)
就是把一组雷同数据类型的数据,按照一定的顺序排列,组合到一起。
我们把这组雷同数据类型的变量,数据,用一个统一的名称进行管理。这个统一的名称,叫做数组名。
此中的每一个数据我们称为元素(element),怎样表示一个元素,通过下标,索引(index)
这个数组的元素的个数,我们称为数组的长度(length)
二、怎样声明一个数组
语法格式:
元素的数据类型[] 数组名;
三、怎样为数组初始化
1、数组本身初始化:
确定数组的长度,确定元素的个数
本质上,申请一整块连续的空间,用来装数据- 语法格式:
- 数组名 = new 元素的数据类型[数组的长度];
复制代码 2、数组的元素初始化
如果数组的元素不赋值,有初始值,有默认初始值。- 数据类型:
- 基本数据类型(8种)
- 引用数据类型:类、接口、数组、枚举
- byte,short,int,long : 默认为0
- float,double:0.0
- boolean:false
- char:\u0000 Unicode编码值为0的字符
- 引用类型:默认为null
- 也可以手动初始化。
复制代码 2.1 一维数组
语法格式:
数组名[下标] = 值;- // 动态初始化
- int[] arr = new int[3]; // 定义一个数组并且给定其长度,目前默认数值都是0 这是属于动态初始化
- arr[0] = 3;
- arr[1] = 9;
- arr[2] = 8;
- // 静态初始化
- int[] arr[] = new int[]{3,9,8}; // 定义一个数组,并且赋值,这属于静态初始化
复制代码- public static void main(String[] args){
- //请组长把本组的每一个学员的成绩,录入,并保存
- //后续可能需要,找最高分,最低分,排序,....
- //这么做不方便后面的统一管理,例如:排序等
- /*
- int s1 = 89;
- int s2 = 87;
- int s3 = 56;
- */
- //int a;//声明变量
- //int[] scores;//声明数组
- //scores = new int[5];//数组的初始化,确定数组的长度,一共可以装5个int的整数
- //元素的数据类型:int
- //数组名:scores
- //数组的长度:scores.length,值是5
- //下标的范围:0~4
- //元素有哪些?scores[0],scores[1],scores[2],scores[3],scores[4]
- int[] scores = new int[5];
- /*
- System.out.println("第一个元素的值是:" + scores[0]);
- System.out.println("第二个元素的值是:" + scores[1]);
- System.out.println("第三个元素的值是:" + scores[2]);
- System.out.println("第四个元素的值是:" + scores[3]);
- System.out.println("第五个元素的值是:" + scores[4]);
- //System.out.println("第五个元素的值是:" + scores[5]);//错误的,会导致数组下标越界异常
- */
- for(int index = 0; index<5; index++){
- System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
- }
- scores[0] = 89;//第一个元素,第一个数据
- scores[1] = 87;//第二个元素,第一个数据
- scores[2] = 56;//第三个元素,第一个数据
- scores[3] = 99;//第四个元素,第一个数据
- scores[4] = 78;//第五个元素,第一个数据
- //赋值之后再遍历,挨个看看元素的值
- for(int index = 0; index<scores.length; index++){
- System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
- }
- }
复制代码 </ol>七、十大内部排序算法
直接选择排序、堆排序
> 冒泡排序、快速排序
直接插入排序、折半插入排序、Shell排序
八、数组的工具类:Arrays
在java.util包
(1)Arrays.sort(数组名):从小到大排序
(2)Arrays.toString(数组名):把数组的元素拼接成一个字符串,[元素1,元素2,元素3...]
(3)Arrays.fill(数组名,value值):把数组每一个元素都填充为value值
(4)Arrays.fill(数组名,from,to, value值):把数组[from,to)的位置填充为value值
(5)Arrays.copyOf(原数组名,新数组的长度):用一个新数组接收一下
新数组 = Arrays.copyOf(原数组名,新数组的长度);
(6)Arrays.copyOfRange(原数组名,from, to):to可以高出原数组的下标范围,新数组的长度是to-from,to不包含
新数组 = Arrays.copyOfRange(原数组名,from, to);
(7)Arrays.binarySearch(数组名,要查找的value值)
这个方法的条件,必须保证数组是有序,否则结果是不保证正确的- int[][] arr = new int[3][2];
- int[][] arr = new int[3][2];
- arr[0] = new int[2];
- arr[1] = new int[3];
- arr[2] = new int[4];
- int[][] arr = new int[3][];
- arr[0] = new
复制代码 九、数组的异常
- 数组脚标越界异常(ArrayIndexOutOfBoundsException)
- public static void main(String[] args) {
- // 1、二维数组的声明和初始化
- int[] arr = new int[]{1, 2, 3}; //一维数组
- // 静态初始化
- int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {1, 2, 4}};
- // 动态初始化1
- String[][] arr2 = new String[2][2];
- // 动态初始化2
- String[][] arr3 = new String[3][];
- //2.如何调用数组的指定位置的元素
- System.out.println(arr1[0][1]);
- System.out.println(arr2[1][1]);
- arr3[1] = new String[4];
- System.out.println("arr3 = " + arr3[1][0]);
- // 3、获取数组的长度
- System.out.println("arr1.length = " + arr1.length);
- System.out.println("arr1[0].length = " + arr1[0].length);
- System.out.println("arr1[1].length = " + arr1[1].length);
- // 4、如何遍历二维数组
- for (int i = 0; i < arr1.length; i++) {
- for (int j = 0; j < arr1[i].length; j++) {
- System.out.print(arr1[i][j] +",");
- }
- System.out.println();
- }
复制代码 访问到了数组中的不存在的脚标时发生。
- 空指针异常(NullPointerException)
- 为什么从0开始?
- 数组名也是一个变量,而且是一个引用数据类型的变量。
- 数组名存储的是这块连续内存空间的首地址。
- 第一个元素:数组名[0]表示距离首地址的偏移量为0
- 第二个元素:数组名[1]表示距离首地址的偏移量为1
复制代码 arr引用没有指向实体,却在操作实体中的元素时
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |