Java基础(4)------数组


1.     什么是数组

数组(Array)本质上是一类数据的群组,每个数据会有一个索引值(index),只要指定索引值就可以取出对应的数据。(数组也是对象)   数组是java中的一种结构。

       数组属于引用数据类型,使用的时候需要内存空间。  

在使用数组之前一定要先确定数组的类型和大小。

2.创建数组的方法

Java数组是干什么的 java中的数组是什么_数据

3. 一维数组的初始值

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_02

4.数组内存的分配

      

Java数组是干什么的 java中的数组是什么_栈内存_03

 

开辟栈内存空间:

int[]score = null;

开辟栈内存就是给对象起了个名字。

开辟堆内存空间:

       堆中存放的是对象真正的值,一个数组(对象)只有开辟了堆内存后才可以使用。

栈内存保存对象的名字,堆内存保存对象的内容(真实的数据)。

5.对于堆栈的进一步解释

       在数组的操作中,在栈内存中保存的永远是数组的名称,只开辟了栈内存的数组是永远无法进行使用的。必须有指向的堆内存才可以使用,要想开辟新的堆内存通常使用new 关键字,之后只是将此堆内存的使用权限(内存地址)交给了栈内存地址空间。而且一个堆内存空间可以同时被多个栈内存空间所指向。

       即:一个人可以有多个名字,人就相当于堆内存,名字相当于栈内存

Java数组是干什么的 java中的数组是什么_栈内存_04

       6.数组的访问

牢记数组的操作,必须依靠索引值。

(1).遍历数组中的数据

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_05

注意:数组长度一旦定义,它的长度就不可以改变了,没有定义数组长度之前可以动态定义数组的长度

7.数组的排序

       (1).冒泡排序

              思路:从第0位到第length-2依次和后一位相比较如果前面的数比后面的数的数大就交换两个位上的数据,依次进行length-1次比较依次将最大,第二大,第三大的数据。。。依次放在了数组的第length-1,length-2,length…位。达到了对数据中的数据进行从小到大的排序

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_06

(2).数组的排序(选择排序)

从上面的冒泡排序法中发现有的位置需要进行多次的两个位置上的数据交换

这样使效率降低(因为位置的交换不是一步到位)

下面使用选择排序对数组进行排序。

算法如下:就数据进行i=0 && i<length-1次循环将 每次查找从第i位到第length-1位将最小的数。然后和第i位上的数进行交换。这样减少了两个数交换的顺序提高了排序效率

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_07

Java数组是干什么的 java中的数组是什么_数据_08

Java数组是干什么的 java中的数组是什么_数据_09

8.数组的最值

(1).求最大值

Java数组是干什么的 java中的数组是什么_栈内存_10

(2).求最小值

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_11

9.数组的查找

(1).一般查找

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_12

(2).折半查找

思路:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止

Java数组是干什么的 java中的数组是什么_数组_13

Java数组是干什么的 java中的数组是什么_数据_14

10.二维数组

二维数组说白了就是: 数组里边装数组

11.二维数组的声明方法

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_15

12.二维数组的遍历方法

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_16

二维数组的length属性表示行数,而且每行装的数组长度是不能一样的

Java数组是干什么的 java中的数组是什么_Java数组是干什么的_17