递归:
本质:A方法调用A方法,自己调用自己
结构:
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法
数组:
数组是相同类型数据的有序集合
数组描述的是相同类型的若干个数据,按照一定的先后顺序排列组合而成
每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它
数组声明创建:
首先声明数组变量,才能在程序中使用数组
格式:dataType[] arrayRefVar = new dataType [arraySize];
数组的元素通过索引访问,索引从0开始
获取数组长度:arrays.length
如果超过数组长度,那么输出的就是数组类型的默认值
初始化方法:
1.静态初始化
2.动态初始化
3.数组的默认初始化:数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配内存,其中的每个元素也被按照实例变量同样的方式被隐式初始化
内存分析:
堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
栈:存放基本变量类型(包含这个基本类型的具体数值),引用对象的变量(存放这个引用在堆里面的具体地址)
方法区:可以被所有的线程共享,包含了所有的class和static变量
数组的四个基本特点:
1.长度确定,大小不可被改变
2.元素必须是相同类型,不允许出现混合类型
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身就在堆中
补充:数组下标越界就会报错,合法区:[0,length-1]
数组增强for循环:array.for
多维数组:
多维数组可以看成是数组的数组
格式: int a[][] [] [] = new int [2] [5]
Arrays类:
数组的工具类属于java.util.Arrays
Arrays类中的方法都是static修饰的静态方法可直接通过类名进行调用
功能:
1.给数组赋值:fill方法
2.对数组排序:sort方法,按升序
3.比较数组:equals方法比较元素值是否相等
4.查找数组元素:binarySearch方法能对排序好的数组进行二分查找操作