2.1.1什么是数组,为什么要使用数组?
java中存储数据的最小单元是变量,一个变量只能存储一个数据,如果需要存储大量的数据就需要使用大量的变量,因此需要一种新的数据类型能够存储大量数据的数据类型-数组
数组-用来存储大量相同数据的集合 。
2.1.2如何使用数组?
1)数组的初始化
数据类型[] 数组名 = {};
数据类型[] 数组名 = new 数据类型[]{数据};
数据类型[] 数组名 = new 数据类型[数组长度];
数据类型 数组名[] = new 数据类型[数组长度];//不推荐使用,但是源代码中有这么定义的数组
2)数组中数据的存取
数组会对数组内的数据进行编号,也就是下标,下标从0开始,以数组的长度减一结束。
存
数组名[下标] = 数据;
取
eg:int a = arr[0]; //将arr[0]的值赋给a
2.1.3使用数组需要注意哪些问题》
1.数组只能存储相同类型的数据
2.使用new创建数组时,[]内的数应该是大于等于0的整数,为0时数组中什么都没有,数组长度若为负数,可以编译但运行时会报错
3.在取出数组中的数据时,是将和数据相同的值赋出去,而不是将自己给出去,也就是说
eg: arr[0] =10;
int a = arr[0];
结果:a =10
arr[0] =10
4.在遍历数组时要记住下标不能越界
5.数组属于引用类型,数组型的数据本质是对象 6.数组创建后,如果没有赋值,字符串数组的默认值为null,整数数组的默认值为0,小数数组的默认值为0.0,字符类型默认是nul,布尔类型默认是false。
2.1.4遍历数组有几种?
1)通过索引依次遍历
for(int i=0;i<arr.length;i++){ int a = arr[i]; } arr.fori
2)循环增强
for(int a : arr){ System.out.print(a); }
2.1.5数组有哪些方法?
-
concat方法:用于合并两个或多个数组。此方法不会改变现有数组,而是返回一个新数组。
-
every()方法:测试数组的所有元素是否都通过了指定函数的测试。如果所有元素都通过测试,则返回true;否则返回false。
-
filter()方法:创建一个新数组,其包含通过所提供函数实现的测试的所有元素。
-
fill()方法:用一个静态值填充一个数组从起始索引到终止索引内的所有元素。不包括终止索引。
-
find()方法:返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。
-
findIndex()方法:返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
-
forEach()方法:对数组的每个元素执行一次提供的函数。
-
includes()方法:用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回true,否则返回false。
-
indexOf()方法:返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
-
isArray()方法:用于判断一个对象是否为数组。如果是,则返回true;否则返回false。注意,这个方法实际上是
Array.isArray()
,而不是一个单独的数组方法。 -
join()方法:将数组的所有元素连接成一个字符串。
-
lastIndexOf()方法:返回在数组中可以找到一个给定元素的最后一个索引,如果不存在,则返回-1。注意这里的文本中“lastlndexOf”是一个拼写错误,正确应为“lastIndexOf”。
-
map()方法:创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
-
pop()方法:删除并返回数组的最后一个元素。
-
push()方法:将一个或多个元素添加到数组的末尾,并返回新的长度。
-
reverse()方法:反转数组的元素顺序。
-
shift()方法:删除并返回数组的第一个元素。
-
slice()方法:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝。原数组不会被修改。
-
some()方法:测试数组中的某些元素是否通过了指定函数的测试。如果通过了测试,则返回true;否则返回false。
-
sort()方法:对数组的元素进行排序。
-
splice()方法:通过删除或替换现有元素或者添加新元素来修改数组,返回由被删除的元素组成的数组。
-
unshift()方法:将一个或多个元素添加到数组的开头,并返回新的长度。
2.1.6数组和可变参数的区别
1,可变参数,可以是多个,或者没有。
2,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数;
3,如果一个方法有多个参数,可变参数应放到最后。
2.1.7数组的扩容和数组的缩小如何实现?
使用Arrays.copyOf()对数组进行扩充
格式:数据类型[] 新数组名 = Arrays.copyOf(原数组名,新数组长度)
int[] bbb = {1,2,3,4}; int[] ints = Arrays.copyOf(bbb, 8);
int[] bbb = {1,2,3,4}; int[] ints = new int[8]; for(int i=0;i<bbb.length;i++){ ints[i] = bbb[i]; } System.out.println(Arrays.toString(ints));
同样的,也可以使用Arrays.copyOf()对数组进行缩小
格式:数据类型[] 新数组名 = Arrays.copyOf(原数组名,新数组长度)
int[] bbb = {1,2,3,4}; int[] ints = Arrays.copyOf(bbb, 2);
int[] bbb = {1,2,3,4}; int[] ints = new int[2]; for(int i=0;i<ints.length;i++){ ints[i] = bbb[i]; } System.out.println(Arrays.toString(ints));
2.2
2.2.1什么是排序
排序是计算机科学中的一个基本概念,指的是将一组数据元素按照某种逻辑顺序重新排列的过程。这种逻辑顺序可以是从小到大的升序,也可以是从大到小的降序,或者是根据某种自定义的规则进行排序。
2.2.2冒泡排序的口诀
1数组排序指的是将数组中的元素按照一定的顺序(如升序或降序)重新排列的过程。
2两两比较,相邻交换,大数冒泡,沉到末端;
-
两两比较:在冒泡排序的过程中,会不断地对相邻的两个元素进行比较。
-
相邻交换:如果相邻的两个元素的顺序(大小关系)是错误的(即前一个元素大于后一个元素,对于升序排序来说),则将它们交换位置。
-
大数冒泡:在每一次遍历的过程中,较大的元素会像“冒泡”一样逐渐“浮”到数列的末端(对于升序排序来说)。
-
沉到末端:经过多次遍历和交换后,最大的元素最终会被移动到数列的最后一个位置,而较小的元素则会逐渐移动到数列的前面。
//冒泡排序 int[] arr = {1, 5, 3, 7, 9, 2}; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } System.out.println("第"+(i+1)+"轮"+ Arrays.toString(arr)); } System.out.println(Arrays.toString(arr));
2.3对象数组
2.3.1什么是对象数组/
如果一个数组中的元素是对象类型,则称该数组为对象数组。
可以将对象数组的声明和创建用一条语句来完成。例如:定义一个学生类对象数组,可以用下面的语句
定义:Student stu[ ]=new Student[30];
2.3.2为什么使用对象数组?
当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。
2.3.3如何使用对象数组?
/ 静态初始化对象数组 Person[] people = { new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35) }; // 动态初始化对象数组并修改元素 Person[] morePeople = new Person[2]; morePeople[0] = new Person("David", 40); morePeople[1] = new Person("Eva", 28); // 修改数组元素 morePeople[1].age = 29;标签:返回,...,arr,int,元素,数组,new From: https://blog.csdn.net/weixin_62192155/article/details/143798418