1.数组:
概念:同一种类型数据的集合,其实,数组就是一个容器
优点:可以方便的对其进行操作,编号从0开始,方便操作这些元素。
2,数组的格式
元素类型[]数组名=new 元素类型[数组元素个数];
int [] arr = new int[5];
int []arr = new int[]{1,2,3};
int []arr={1,2,3};
3.数组的内存分配及特点
int []arr = new int[4];
栈内存中定义一个数组变量,在堆内存中是实体内容,一排连续的地址。
4.java程序在运行时,需要在内存中分配空间,为了提高效率,有对其进行了区域划分,每一块有特定的处理数据的方式和内存管理方式
内存划分为:寄存器、本地方法区、方法区、栈内存区、对内存区。
栈内存:用于存储局部变量,当变量所属的作用域一旦结束,所占空间就会被释放。
堆内存:数组和对象,通过new创建一个实例放入对中,每一个实例一个内存地址值。
实体中的变量都有默认的初始化值,根据数据类型的不同而不同,正数的数据类型是0,小数的类型是0.0或0.0f,boolean类选哪个是false。
如果将数组中的引用实体设置为null,那么就表示实体不被引用,那么会在不确定的时间内被内存回收机制所回收。
5.数组的常见操作。
(1)对数组操作的动作就是存取,核心思想就是对角标的操作。
首先,遍历打印数组元素,遍历的时候,数组的长度是Array1.length
(2)获取数组的值(最大、最小)
实现方法:
需要比较,并定义变量记录住每次比较后的较大值。
对数组中的元素进行遍历取出,和变量中记录的元素进行比较,如果遍历到变量中进行比较,记住最大的值。
变量结果,该记录就是最大值。
一句话总结:假设一个最大值,然后变量数组,让其和任意一个数据进行比较,如果比它大就进行替换,假如小,就不做任何操作,进行下一次数据操作。
实现代码:就是将数据的值进行记录,还有一种是对角标进行记录。
(3)排序:
1)选择排序
思路:首先得到数组的第一个元素,依次与其他数据进行比较,如果第一个元素大于剩下 的元素,就互换内容。
经过一次比较之后,就可以得到第一个数据为最小的数据,然后将第二个元素,进行下一次的数据比较。
一次类推,直到最后一个元素。
2)冒泡排序
思路:首先在第一次排序中,数组的第一个元素到倒数第二个元素依次与其左边元素进行比较,如果左边大于左边元素,就互换。
经过一次比较,最大的元素就已经存入到数组最右边的节点中
第二论排序则是从第一个元素到倒数第三个元素依次与其右边的元素进行比较,如果左边的元素大于右边的元素,那么就互换。
依次下去,就可将所有 的数据比较而结束。
当然上面的排序可以直接的调用工具类来完成操作。
(4)折半查找
一般的数据,如果没有顺序,那么就只有使用遍历的方法进行数据的查找,如果是有顺序 的时候就可以使用折半查找的方法了‘。
折半查找的实现思路:
1,设置三个变量:min、max、mid,min初始为0,max为数组的最大角标,mid是(max+min)/2.
2.查看mid角标的元素是否与带查找的数据值相等,如果相等就可以返回数据
3.如果待查找小于mid的元素值,那么就说明需要在min和mid之间查找数据,如果大于mid的值就需要在max和mid之间找值
4.如果数组中找不到待查找的元素,那么就返回-1.
6.数组可以存什么:可以存基本数据类型和对象数据类型。