Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找

一、初步认识数组

1.理解数组

Java提供了数组这种数据结构,主要可以将大量的数据存储起来


定义:数组是用来存储相兼容数据类型的定长的容器

2.数组的特点

a.数组中只能存放相兼容类型的数据,不能存放多种类型的数据
b.数组中既可以存储基本数据类型,也可以存储引用数据类型
c.数组是定长的,一旦一个数组被初始化,那么这个数组的长度就不能再发生改变
d.数组相当于是一个容器
e.数组中存储的数据被称为元素

3.使用数组的好处

可以自动的给存储到数组中的数据进行编号,从0开始,方便操作数据
这些编号就被称为下标,角标,或者索引
编号和数据之间存在着一一对应的关系,通过编号,就可以直接找到相对应的数据    

4.数组的定义

注意:数组属于引用数据类型,本身仍然是一种数据类型,所以可以定义数组变量
数据类型 变量名称 = 初始值;

方式一:数据类型[] 数组名称;
方式二:数据类型 数组名称[];
推荐使用方式一,c#已经不支持方式二定义数组

int x = 10;
int[] a;
int a[];
说明:int是一种基本数据类型,int[]是数组类型,在这里,int表示数组中存储的元素的数据类型

二、数组的初始化

所谓初始化,Java中的数据必须先进行初始化,然后才能使用,为数组中的元素分配内存空间,并为每个元素赋初始值

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第1张图片>

1.静态初始化

初始化时由程序员指定每个元素的初始值,由系统计算数组的长度
语法:数组元素类型[] 数组名称 = new 数组元素类型[]{元素1,元素2.。。。。};
例如:int[] arr = new int[]{10,20,30,40};
    可简写为int[] arr = {10,20,30,40};

说明:任何一个变量都需要由自己确定的数据类型,这里的arr表示是数组变量名称,int表示数组中元素的类型,int[]表示数组类型

2.动态初始化

初始化时由程序员指定数组的长度,由系统分配初始值
语法:数组元素类型[] 数组名称 = new 数组元素类型[元素的个数或者数组的长度];

初始值的分配规则:
整型  0
浮点型     0.0
字符型 \u0000  【空格,方框】
布尔类型    false
引用数据类型  null


注意:
a.在初始化数组时,不要静态初始化和动态初始化同时使用,【不要在进行数组初始化时,既指定数组的长度,而且给每个元素赋初始值】
b.既然数组也是一种数据类型,所以在定义数组的时候,也可以先声明,然后再初始化
    举例:
    int x;
    x = 10;

    int[] socres;
    socres = new int[10];

三、数组的使用

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第2张图片>


<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第3张图片>

1.访问数组的元素值

通过下标【索引】

语法:数组名称[下标]

2.获取数组中的元素个数【数组的长度】

在Java中,所有的数组都提供了一个length属性,通过这个属性可以访问数组的长度或者元素的个数
语法:数组名称.length

3.给数组元素赋值或者修改值

4.遍历数组

遍历:依次访问数组中的每一个元素【通过不同的下标获取各自对应的值】
    1>简单for循环【while循环】

    2>增强for循环【foreach循环】
        JDK1.5之后新增的
        优点:用于遍历数组和集合,无需下标,就可以直接获取数组或者集合中的元素
    语法:
    for(数组元素类型 变量名 :数组或者集合名称) {
        //循环体
    }

四、内存中的数组

数组是一种引用数据类型,数组引用变量其实就是一个引用,数组元素和引用在内存中是分开存放

数组引用变量可以指向任何有效的内存空间,只有当该引用指向有效的空间之后,才可以通过这个引用操作数组中的的元素,当引用赋值为null,表示该引用指向了一个无效的空间

数组的引用变量存储于栈空间中,被new出来的实际的数组存储于堆空间中

总结:对于引用数据类型,当两个引用变量指向同一块内存空间时,当修改一个变量的值时,另外一个也跟着变化

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第4张图片>

扩展:内存的分类

a.寄存器,最快的一块存储区,由编译器根据需求进行分配,我们在程序中无法控制

b.栈:存放基本数据类型的变量以及引用数据类型的引用

    特点:先进后出,后进先出,被执行完成之后,该函数或者语句中的变量将被销毁,所占用的空间将会被释放

c.堆:存放所有使用new关键字创建出来的实体

    特点;执行完之后不会立即被释放,当使用完成之后,会被标记上垃圾的标记,等待系统的垃圾回收机制回收它

d.方法区:

    静态域:存放静态变量【static】

    常量池:存放字符串常量和基本数据类型的常量


    int[] arr = {235,54};
    String str = "hello world";

五、数组的应用

1.排序

冒泡排序

    排序思路:比较两个相邻的下标对应的元素,如果符合条件就交换位置【最值出现在最右边】

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第5张图片>

选择

    排序思路:固定一个下标,然后使用这个下标对应的元素和其余的元素进行比较,如果符合条件就交换位置【最值出现在最左边】

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第6张图片>

2.查找

顺序查找

        将要查找的数据和数组中的元素进行一一的比对,如果相等,说明查找到了

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第7张图片>

二分法查找

        前提条件:数组必须是有序的

        查找思路:通过折半来缩小查找范围【以升序为例,将待查找的数据与中间下标对应的元素进行比较,如果中间下标对应的元素大于待查找的元素的话,说明待查找的元素在前半部分】

<Java基础知识之数组的定义,初始化,数组的使用,遍历数组,排序,查找_第8张图片>

你可能感兴趣的:(Java基础知识笔记(五),Java,数组的定义,数组的初始化,数组的遍历,排序和查找)