数组

为什么要学习数组?

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

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

数组:

能够存储多个变量的容器

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

特点:

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

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

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

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

数组格式的定义:

数据类型 [] 数组名

数据类型 数组名 []

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

初始化数组

在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}
}

(如有纰漏请见谅)