Java-数组

一、初步认识数组

1.理解数组

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

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

2.数组的特点

a.数组中只能存放相兼容类型的数据,不能存放多种类型的数据

b.数组中既可以存储基本数据类型,也可以存储引用数据类型

c.数组是定长的,一旦一个数组被初始化,那么这个数组的长度就不能再发生改变

d.数组相当于是一个容器

e.数组中存储的数据被称为元素

3.使用数组的好处

可以自动的给存储到数组中的数据进行编号,从0开始,方便操作数据

这些编号就被称为下标,角标,或者索引

编号和数据之间存在着一一对应的关系,通过编号,就可以直接找到相对应的数据   

4.数组的定义

注意:数组属于引用数据类型,本身仍然是一种数据类型,所以可以定义数组变量

数据类型 变量名称 = 初始值;

方式一:数据类型[] 数组名称;

方式二:数据类型 数组名称[];

推荐使用方式一,c#已经不支持方式二定义数组

int x = 10;

int[] a;

int a[];

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

二、数组的初始化

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

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];

三、数组的使用

1.访问数组的元素值

通过下标【索引】

语法:数组名称[下标]

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

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

语法:数组名称.length

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

4.遍历数组

遍历:依次访问数组中的每一个元素【通过不同的下标获取各自对应的值】

    1>简单for循环【while循环】

    2>增强for循环【foreach循环】

        JDK1.5之后新增的

        优点:用于遍历数组和集合,无需下标,就可以直接获取数组或者集合中的元素

    语法:

    for(数组元素类型 变量名 :数组或者集合名称) {

        //循环体

    }

四、内存中的数组

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

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

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

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

扩展:内存的分类

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

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

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

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

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

d.方法区:

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

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

    int[] arr = {235,54};

    String str = "hello world";

五、数组的应用

1.排序

冒泡排序

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

选择

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

2.查找

顺序查找

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

二分法查找

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

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

数组优缺点总结

优点:1、按照索引查询元素速度快2、能存储大量数据3、按照索引遍历数组方便缺点:1、根据内容查找元素速度慢2、数组的大小一经确定不能改变。3、数组只能存储一种类型的数据4、增加、删除元素效率慢5、未封...

优点:数组定义简单,而且访问很方便缺点:数组中所有元素类型都必须相同 数组大小必须定义时给出,而且大多数情况下,数组空间的大小一旦确定后就不能更改 数组的空间必须是连续的,这就造成数组在内存中分配空间...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,008评论 2 9
  • 数组类型和数组引用变量详解 数组类型为什么要用数组?Java数组的两大特征:定义数组时,不能指定数组的长度变量分为...
    Ansaxnsy阅读 7,926评论 2 3
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,463评论 1 10
  • 数组的概念: 数组是一个容器,存放一组相同数据类型变量的容器 数组的格式: 数据类型[] 数组名; Java写法 ...
    i_4178阅读 3,308评论 0 0
  • 1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态...
    CoderJed阅读 12,184评论 0 8

友情链接更多精彩内容