数组
为什么要学习数组?
目前为止,我们学习的所有数据的存储都是单个的
如果要求记住多个同一类型的数据。需要用到数组
数组:
能够存储多个变量的容器
这个容器中所存的变量的数据类型是一致的
特点:
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}
}
(如有纰漏请见谅)