栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

21day-4:Java数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

21day-4:Java数组

​
​

活动地址:CSDN21天学习挑战赛

目录

什么是数组

数组的定义

静态初始化数组

数组的使用

注意事项

动态数组定义

数组遍历

数组基本操作

数组的内存图

数组使用常见问题

debug的使用


什么是数组

数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。

        String[] str = {"aaa","bbb","ccc"};
        int[] ints = {111,222,333};
        char[] chars = {'a','b','c'};
​
        String str1 = "aaa";
        String str2 = "bbb";
        String str3 = "ccc";
        
        int i1 = 111;
        int i2 = 222;
        int i3 = 333;

和正常对一种类型变量创建赋值来说,数组要比单个操作要方便快捷很多。

数组的定义

静态初始化数组
//完整格式
​
//数据类型[] 数组名 = new 数据类型[]{元素1,元素2 ,元素3… };
​
double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
​
int[] ages = new int[]{12, 24, 36} 
​
​
​
//简化格式
​
//数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };
​
int[] ages = {12, 24, 36};

注意:数组变量名中存储的是数组在内存中的地址,数组是引用类型。

数组的使用

数组是有序的,可以根据索引来操作数组里面的数据。数组索引是从0开始的,也就是说以上的数组ages[0]=12。

//取值
System.out.println(arr[0]); // 12
​
//赋值
​
arr[2] = 100;
​
System.out.println(arr[2]); // 100
​
//数组可以使用 '数组名'.length ,可以查看数组长度
System.out.println(arr.length); // 3

上面可以根据 '数组名'.[索引值]来获取当点索引的这个变量,并且可以对他进行一系列的操作,可以根据length来获取数组的长度。因为索引从0开始,所以数组的最大索引则是数组长度-1,也就是length-1

注意事项

数组定义可以“数据类型[] 数组名”这样写,也可以写成 “数据类型 数组名[] ”这样写。

数组类型一旦定义,什么类型的数组存放什么类型的数据,否则报错。

数组被创建出来,长度就是刚创建出来的长度并且不能改变。

动态数组定义

定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据

//数据类型[] 数组名 = new 数据类型[长度];
​
int[] arr = new int[3];
​
// 后赋值
arr[0] = 10;
System.out.println(arr[0]); // 10

byte、short、int 、char、long类型数组元素的默认值都是0

float、double类型数组元素的默认值都是0.0

boolean类型数组元素的默认值是false、String类型数组元素的默认值是null

数组遍历

数组遍历就是指一个一个数据的访问。搜索、数据统计等等都需要用到遍历。

int[] ages = {20, 30, 40, 50};
​
for (int i = 0; i < ages.length; i++) {
​
System.out.println(ages[i]);
​
}
​
//输出
20
30
40
50

数组基本操作

我们根据数组的遍历,可以对数据进行些简单的操作

例如:int数组求和

int[] money = {16, 26, 36, 6, 100};
​
int sum = 0;
​
for (int i = 0; i < money.length; i++) {
​
// i = 0 1 2 3 4
​
sum += money[i];
​
}
System.out.printf(sum);//184

求最大值

int[] faceScores = {15, 9000, 10000, 20000, 9500, -5};
int max = 0;
​
for (int i = 0; i < faceScores.length; i++) {
​
if(faceScores[i] > max) {
​
// 替换
​
max = faceScores[i];
​
} 
​
}

数组的内存图

我们创建一个方法,字节码文件加载时进入内存的方法区

变量在栈内存,new出来的对象在堆内存,并开辟空间,产生地址

有时候存在两数组变量指向一个对象的时候

例如:int[] 数组= {11, 22, 33}; int[] 数组1 = 数组;

数组使用常见问题

问题1:如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)

问题2:如果数组变量中没有存储数组的地址,而是null, 在访问数组信息时会出现NullPointerException(空指针异常)

int[] arr = new int[]{11, 22, 33};
​
System.out.println(arr[2]);
​
// System.out.println(arr[3]) //出现异常ArrayIndexOutOfBoundsException
//数组越界
​
arr = null;
​
System.out.println(arr); // null
​
// System.out.println(arr.length) //出现异常NullPointerException
//数组空指针

debug的使用

Debug工具

IDEA自带的断点调试(排错)工具,可以控制代码从断点开始一行一行的执行,然后详细观看程序执行的情况。

① 在需要控制的代码行左侧,点击一下,形成断点

② 选择使用Debug方式启动程序,启动后程序会在断点暂停

③ 控制代码一行一行的往下执行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033239.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号