2021-05-10

一 为什么需要数组?
为了存储多个数据值
二 什么是数组?
数组是用来存储同一种数据类型多个元素的容器。 数据类型:可以是基本类型,也可以是引用类型 容
器:比如教
室、衣柜、纸箱等,可以存放多个事物
三 数组的定义和访问
3.1 数组的定义格式一:
数据类型 [ ] 数组名 = new 数据类型 [ 长度 ];
定义格式详解:
1. 数据类型:即数组中存储元素的数据类型,可以是基本数据类
型,也可以是引用数据类型
2. [ ] :表示数组
3. 数组名:数组的变量名,遵循标识符命名规范
4. new :创建数组的关键字,通过 new 开辟内存空间
5. 长度:即数组长度,数组最多能够存放元素的个数。数组长度
在定义时指定,不可更改
3.2 数组的定义格式二:
数据类型 [ ] 数组名 = new 数据类型 []{ 元素 1, 元素 2, 元素 3…};
格式二的好处:
定义时元素是确定的,避免内存空间的浪费
// 定义一个长度为 6 的整形数组
int [] nums = new int [ 6 ];
double [] doubleNums = new double []{. 1 , . 2 , 0.3 }; 3.3 数组的定义格式三:
数据类型 [ ] 数组名 = { 元素 1, 元素 2, 元素 3…};
格式三是格式二的变形,简化了代码编写
3.4 数组的初始化
在内存中为数组开辟连续空间并为每个元素赋值的过程
内存 :计算机的重要组件,用于程序运行中临时存储数据。
连续空间 :数组元素在内存空间中的存放位置是连续的
3.4.1 动态初始化:
只指定长度,由系统给出默认值
整数型: 0
浮点型: 0.0
字符型: '\u0000' (空字符)
布尔型: false
引用类型: null
3.4.2 静态初始化:
给出初始化值,由系统决定数组长度
3.5 数组的访问
通过数组的索引访问数组的元素
索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量
第一个元素的偏移量为 0 ,所以数组的索引从 0 开始
格式:数组名 [ 索引 ]
取值:数组名 [ 索引 ]
赋值:数组名 [ 索引 ] = ;
3.6 数组的遍历
double [] doubleNums = {. 1 , . 2 , 0.3 };
int [] intArr = new int [ 6 ];
double [] doubleArr = new double []{ 0.1 , 10.1 , 100.1 };
int [] intArr2 = { 1 , 2 , 3 }; 需求:
给定一个 int 型数组,输出数组中的每一个元素
分析:
A :使用格式一定义一个长度为 5 int 型数组
B :为数组的前三个元素分别赋值为 1 2 3
C :使用循环遍历数组
数组的长度:数组名 .length
package com.bigdata; 
public class ArrayDemo {
 public static void main(String[] args) { 
int[] intArr = new int[6]; 
double[] doubleArr = new double[]{0.1, 10.1, 100.1}; 
int[] intArr2 = {1, 2, 3}; 
int val0 = intArr2[0]; 
System.out.println("val0 = " + val0); 
int val2 = intArr2[2]; 
System.out.println("val2 = " + val2); 
intArr2[2] = 6; val2 = intArr2[2]; 
System.out.println("val2 = " + val2);
 int intArr2Len = intArr2.length; 
System.out.println("intArr2Len = " + intArr2Len);
 for (int i = 0; i < intArr2.length; i++) { 
int item = intArr2[i]; 
System.out.println("item = " + item); }
for (int i = 0; i < intArr.length; i++) { 
int intArrItem = intArr[i]; 
System.out.println("intArrItem = " + intArrItem); 
}
System.out.println("intArr2 = " + intArr2); 
// int val4 = intArr2[3]; 
// System.out.println("val4 = " + val4); 
intArr2 = null;
 int intArr2Val0 = intArr2[0]; 
}
结论:
1 :数组的最大索引为数组长度 -1
2 :数组中未手动赋值的元素,有默认值
3 :直接输出数组变量名,得到的是数组的内存地址值
package com . bigdata ;
public class ArrayDemo {
public static void main ( String [] args ) {
int [] intArr = new int [ 6 ];
double [] doubleArr = new double []{ 0.1 , 10.1 , 100.1 };
int [] intArr2 = { 1 , 2 , 3 };
int val0 = intArr2 [ 0 ];
System . out . println ( "val0 = " + val0 );
int val2 = intArr2 [ 2 ];
System . out . println ( "val2 = " + val2 );
intArr2 [ 2 ] = 6 ;
val2 = intArr2 [ 2 ];
System . out . println ( "val2 = " + val2 );
int intArr2Len = intArr2 . length ;
System . out . println ( "intArr2Len = " + intArr2Len );
for ( int i = 0 ; i < intArr2 . length ; i ++ ) {
int item = intArr2 [ i ];
System . out . println ( "item = " + item );
}
for ( int i = 0 ; i < intArr . length ; i ++ ) {
int intArrItem = intArr [ i ];
System . out . println ( "intArrItem = " + intArrItem );
}
System . out . println ( "intArr2 = " + intArr2 );
// int val4 = intArr2[3];
// System.out.println("val4 = " + val4);
intArr2 = null ;
int intArr2Val0 = intArr2 [ 0 ];
} . Java 程序的内存分配
方法区: 存储可运行的 class 文件,包含方法,静态成员,常量等(面向对象部分详解)
栈: 方法运行时使用的内存,特点是 后进先出 ,即最先进入栈区的方法最后出栈,比如 main 方法
堆: 存储 new 出来的数组或对象(面向对象部分详解)
本地方法栈: JVM 在调用操作系统功能时使用,与开发无关
寄存器: CPU 使用,与开发无关
数组类型: 变量 arr 存储的是数组在堆内存中的地址值,而不是数组元素的值,变量 arr 通过内存地址
引用堆内存中的数组,所以数组是引用类型。
. 数组的常见操作
数组使用中两个常见问题
数组索引越界异常: ArrayIndexOutOfBoundsException
当访问了不存在的索引时
异常 :即非正常情况,可以简单理解为程序运行过程中出现错误。
空指针异常: NullPointerException
数组引用存储的值为 null 而非数组的地址值时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值