1-Java基础回顾整理_06_数组
1、数组介绍
数组其实就是相同类型的有序集合。(关键字:相同类型、有序、集合)
它有两种写法:
1)int[] arrays:Java的默认写法,推荐首选
2)int arrays[]:这个其实是C、C++的语法,只是早期为了让C、C++的程序员快速的熟悉Java语言才有了这种写法,不推荐使用。
2、Java内存分析
Java的内存分为:堆、栈、方法区
堆:是用来存放new出来的对象和数组;它可以被所有的线程共享,不会存放其他的对象引用;
栈:用来存放基本变量类型(会包含这个变量的具体值);存放引用对象的变量(会存放这个引用对象在堆里面的具体地址)
方法区:可以被所有线程共享;包含了所有的class(类)和static变量;
3、数组的默认值
当数组被创建出来后,其实是有默认值的,默认值为0; 如:int[] arr = new int[10]; 默认里面的元素都为0
4、数组的特点
1)长度确定,数组一旦被创建出来,那么它的长度大小是不能改变的;
2)数组中的所有元素数组类型都是相同的,(不然的话是无法进行存储的),有序的(有下标索引,存的时候按什么顺序存,就是什么样)
3)数组中元素的类型可以使任意的,包括基本数据类型和引用数据类型,但是必须保持一致;
4)数组整体可以看做一个变量,它本身是一个对象,数组中的每个元素相当于该对象本身的局部变量,因此不管它里面存的什么样类型的数据元素,数据对象本身都是在堆中的;
5、数组下标
数组下标的合法区间:[0,length - 1],若下标越界,则会报数据下标越界异常:ArrayIndexOutofBoundException;
6、数组的遍历
数组的遍历有两种方式:普通for循环、增强for循环
实现数组的遍历反转输出所有元素:自己写一个反转的方法
public static int[] reverse(int[] array){
int[] result = new int[array.length];
for(int i = 0, j = array.length; i < array.length; i ++, j --){
result[ j ] = array[ i ];
}
return result;
}
7、Arrays工具类
首先通过查看源码,我发现Atrrays工具类里面的方法都是有static修饰符的,所以它才可以直接通过类名.方法名()来进行调用,不需要通过创建对象的方式来调用方法;
Arrays工具类常用的功能方法:
1)给数组赋值:file(),如果里面不添加任何条件,使用此方法后会默认进行全部填充和替换,默认元素为0;可以通过制定开始下标,结尾下标,填充元素来自定义填充;
2)数组排序:sort(),给数组里面的元素进行排序操作,升序排列;
3)数组比较:equals(),比较数组里面的元素是否相等;
4)查找数组元素:binarySearch(),对排序好的数组进行二分查找操作;
8、冒泡排序
一共有8中排序,主要是在数据结构中涉及,包括:直接插入排序、希尔排序、直接选择排序、快速排序、堆排序、冒泡排序、归并排序、基数排序 8种
冒泡排序的本质:
有2层循环,外层循环冒泡的轮数,内层用来依次进行元素的大小比较
如:public int[] numSort(int[] array){
int temp = 0;
for(int i = 0; i < array.length-1; i ++){
for(int j = 0; j < array.length - 1 - i; j ++){
if(array[j + 1] < array[j]){
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
main(){
int[] arrays = {1,3,2,17,19,13,15,47,89,53};
numSort(arrays).sout;
}
冒泡排序的优化:因为我们发现,即使当传入的数组是有序的,还是依然会进行比较排序操作;
public int[] numSort(int[] array){
int temp = 0;
boolean flag = false;
for(int i = 0; i < array.length-1; i ++){
for(int j = 0; j < array.length - 1 - i; j ++){
if(array[j + 1] < array[j]){
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
flag = true;
}
}
}
if(flag = false){
break;
}
return array;
}
9、稀疏数组
它是一种数据结构,本质是一个二维数组,因为它的里面要用来存放值;
介绍:
1)当一个二维数组中的大部分元素为0,或者为同一值时,可以使用稀疏数组来保存数组(起到一定的压缩作用)
2)处理方式:
①记录数组中有几行、几列、多少个不同的值;
②把具有不同值元素的行、列及对应的值记录在一个小规模的数组中,从而缩小程序的规模,达到压缩的作用。