JavaSE —— 数组的定义与使用

一、数组的基本概念

1.什么是数组

       数组可以看成是相同类型元素的一个集合,在内存中是一段连续的空间 

JavaSE —— 数组的定义与使用_第1张图片

        java中,包含6个整形类型元素的数组,就相当于上图中连在一起的6个车位,从上图中可以看到:

  1. 数组中存放的元素其类型相同
  2. 数组的空间是连在一起的
  3. 每个空间有自己的编号,起始位置的编号为0,即数组的下标

2.数组的创建与初始化 

2.1 数组的创建:
  • T:表示数组中存放元素的类型
  • T[]:表示数组的类型
  • N:表示数组的长度 

2.2 数组的初始化 

  • 动态初始化:在创建数组时,直接指定数组中元素的个数
  • 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定JavaSE —— 数组的定义与使用_第2张图片

 注意事项:

  1. 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度
  2. 静态初始化时, {}中数据类型必须与[]前数据类型一致
  3. 静态初始化可以简写,省去后面的new T[]JavaSE —— 数组的定义与使用_第3张图片
  4. 如果没有对数组进行初始化,数组中元素有其默认值:
  • 如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值

JavaSE —— 数组的定义与使用_第4张图片

  • 如果数组中存储元素类型为引用类型,默认值为null

3.数组的使用 

3.1 数组中元素访问
        数组 在内存中是一段连续的空间 ,空间的编号都是 从0开始的,依次递增,该编号称为数组的下标 ,数组可以通过下标访问其任意位置的元素 JavaSE —— 数组的定义与使用_第5张图片

注意事项:

  •  数组是一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素
  • 下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常JavaSE —— 数组的定义与使用_第6张图片

 3.2 遍历数组

        1)"遍历" 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作JavaSE —— 数组的定义与使用_第7张图片

        2) 注意:在数组中可以通过 数组对象.length 来获取数组的长度JavaSE —— 数组的定义与使用_第8张图片

        3) 使用 for-each 遍历数组JavaSE —— 数组的定义与使用_第9张图片

 二、数组是引用类型

基本类型变量与引用类型变量的区别
        1)基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值
        2)引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址
JavaSE —— 数组的定义与使用_第10张图片
  •  abarr,都是函数内部的变量,其空间都在main方法对应的栈帧中分配
  • ab是内置类型的变量,其空间中保存的就是给该变量初始化的值
  • array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址

JavaSE —— 数组的定义与使用_第11张图片

2 认识 null
        
         null Java 中表示 " 空引用 " , 也就是一个 不指向对象 的引用
JavaSE —— 数组的定义与使用_第12张图片
  •  null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会抛出 NullPointerException

三、数组的应用场景 

1.保存数据JavaSE —— 数组的定义与使用_第13张图片

2.作为函数的参数 

1)参数传基本数据类型 JavaSE —— 数组的定义与使用_第14张图片
  •  func方法中修改形参 x 的值, 不影响实参的 num

2) 参数传数组类型(引用数据类型)  JavaSE —— 数组的定义与使用_第15张图片

  •  func方法内部修改数组的内容, 方法外部的数组内容也发生改变

3.作为函数返回值 JavaSE —— 数组的定义与使用_第16张图片

  •  获取斐波那契数列的前N

你可能感兴趣的:(java)