数组

为什么要学习数组?

目前为止,我们学习的所有数据的存储都是单个的

如果要求记住多个同一类型的数据。需要用到数组

 

数组:

能够存储多个变量的容器

这个容器中所存的变量的数据类型是一致的

特点:

  1.这个容器中所存的变量的数据类型是一致的

  2.按连续内存地址空间存放

  3.数组长度一旦确定就不能更改

  4.数组在创建后,会自动初始化    int----0    double------0.0   引用类型为------null

数组格式的定义:

  1. 数据类型 [] 数组名
  2. 数据类型 数组名 []

数组的定义完成后,数组中是没有数据

初始化数组

在java中,数组必须初始化以后,才能够使用;

初始化就是为了在内存中开辟内存空间:

就是为数组元素分配内存空间,并且为每一个数组元素(数组中的多个变量)赋值

初始化类型

  1.静态初始化: 给出初始化的值,长度由数组决定  

  2.数据类型[] 数组名 = new 数据类型[]{元素1,元素2,.....}

  3.数据类型[] 数组名 ={元素1,元素2,.....}

  4.动态初始化:只会指定长度,由系统初始化元素

  5.数据类型[ ] 数组名 = new 数组类型[数组的长度]

左边:

  数据类型:表示数组中元素保存的类型

  []:表示这是一个数组

  数组名:数组的名字

右边:

  new :为数组 在内存中分配空间

  数组类型:数组中所有的元素的类型

   [数组的长度]:数字表示数组的长度

数组是有长度的

数组有元素的位置:有下标(索引)

数组长度从1开始

数组下标(索引)是从0开始的

数组最后一个元素的下标:数组长度-1

数组的长度是固定的 不可更改

直接输出数组对象(变量),得到的不是数组元素 ;而是数组存储元素内存地址

          数组下标为什么从零开始?

因为下标为0的元素与数组变量的地址相差0个元素(下标为1的元素与数组变量的地址加1)  偏移量(相差几个元素 偏移量就是 几)

                               

变量、常量与数组的区别

  变量、常量 存储一个数据                      

  数组存储多个数据

JVM内存划分的作用                    

提高运算效率

堆 (存储的是new出来的对象)  

栈 (存储局部变量) 先进后出

方法区 (面向对象) 

本地方法区(跟系统相关)

寄存器(是CPU使用)                           

Arrays .tostring():

  将数组转换成为字符串输出打印

  向数组中添加一个元素

  创建一个新数组,将原数组中的值赋值给新数组;

  将新的元素添加到新数组的最后一个位置;

  将新数组改名:数组是一个变量,保存的是数组的难处地址,就是保存了整个数组的变量;

 

遍历:

对数组中的元素一次输出

 

基本数据类型和引用数据的区别

基本数据类型

  只有4类8种

  基本数据类型的值存放在变量中

引用数据类型

  不是关键字 是有程序员自定义的                            

  变量中存放的是一个引用 只想真正存放值的空间

 

 

Random

 

用来产生随机数

Math.random()产生的随机数范围大于等于0,小于1

Double random = Math.random();

System.out.println(random);

 

二维数组

概述:

  二维数组 就是一个元素为一个一维数组;

格式定义:

  数据类型[][] 数组名;

  数据类型数组名 [][];      只需要知道,不推荐使用

  数据类型[]数组名 []; 只需要知道,不推荐使用

初始化

  数据类型[][] 数组名=new 数据类型[m][n]

  数据类型[][] 数组名=new 数据类型[][]{

          {元素1},

          {元素2},

          {元素3}

    }

数据类型[][] 数组名={

    {元素1},

    {元素2},

    {元素3}

    }

 

(如有纰漏请见谅)