数组
-
Java语言中的数组是一个引用数据类型,在堆内存中。数组的父类是Object.
-
数组实际上是是一个容器,可以同时容纳多个元素(数组是一个元素的集合)。
-
数组当中可以存储基本数据类型的数据,也可以存储引用数据类型的数据。
-
数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用”(内存地址)。
-
数组一旦创建,在java中规定,长度不可变。
-
数组的分类:一维数组、二维数组。。。
-
所有的数组对象都有length属性,用来获取数组中元素的个数。
-
java中的数组要求数组内元素类型统一。
-
数组在内存方面存储的时候,数组中的元素内存地址是连续的。
-
数组中首元素的内存地址作为整个数组对象的内存地址。
-
数组中的每一个元素都是由下标的,下标从0开始,以1递增,最后一个元素的下标是:length-1
下标非常重要,因为我们对数组进行“存取”的时候,都需要通过下标来进行。
-
数组这种数据结构的优点和缺点是什么?
优点:检索效率极高
缺点:第一:随机增删元素效率较低;
第二:不能存储大数据量
-
一维数组初始化
静态初始化:
动态初始化:
-
main方法String数组
这个数组是留给用户的,用户可以在控制台上输入参数,这个参数会被自动转换为String[] args,idea中run-edit configurations-
-
数组扩容
先新建一个大容量数组,然后将小容量数组中的数据一个一个拷贝到大数组中。
数组扩容效率较低,可以在创建数组时预估数组需要多长。
-
数组拷贝
System.arraycopy(5个参数) -
二维数组
二维数组实际上是一个特殊的一维数组,特殊在这个一维数组的每一个元素都是一个一维数组
-
常见的算法(面试题):
-
排序算法
-
冒泡排序算法
-
每一次循环结束之后,都要找出最大的数据,放到参与比较的这堆数据的最右边(冒出最大的哪个气泡)。
-
核心:
拿着左边的数字和右边的数字比对,当左边>右边,交换位置。
-
-
选择排序算法
-
选择排序比冒泡排序效率高,高在交换位置的次数上,每次交换都更有意义。
-
循环一次,找出参加比较的数据中最小的数,拿着这个最小的数和最前面的数据“交换位置”
-
-
-
元素查找
二分法查找:基于排序的基础之上,没有排序的数据无法查找
-
-
Arrays工具类的使用
所有方法都是静态的,直接用类名调用
浙公网安备 33010602011771号