作者简介
作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!
导航
? 从零学Java系列目录索引 ?上一篇【27】Random随机数 ?下一篇【29】方法重载
引言
♀ 小AD:明哥,最近怎么没更新了? ♂ 明世隐:这不是你们快放假了,我打算休息一下! ♀ 小AD:你的意思是放假就不用学习了吗? ♂ 明世隐:对我就是这么觉得的,我上学那会,一放假那就是躺平,特别是过年这会,别提有多high了! ♀ 小AD:我感觉你不对劲。 ♂ 明世隐:???我有什么不对劲 ♀ 小AD:新赛季你多少分了?还把战绩隐藏了,可以啊。 ♂ 明世隐:你看看你,就这点小心思,怕是被五星张飞支配了吧。 ♀ 小AD:啥五星张飞?专精张,OK? ♂ 明世隐:反正你不懂啥叫五星,是不是被支配了,都被打烂了吧。 ♀ 小AD:。。。 ♀ 小AD:说多了都是泪,天知道一个辅助成了大爹,还是又壮、又能打、还很有钱的那种。 ♂ 明世隐:咋还很有钱了呢? ♀ 小AD:就是刷线很无敌呗,打钱快呗! ♂ 明世隐:ban了不就完事了 ♀ 小AD:爹太多ban不完。 ♂ 明世隐:那是不是需要我这个辅助大爹? ♀ 小AD:要,必须要 ♂ 明世隐:就知道是这样 ♀ 小AD:规矩我懂,来 ♂ 明世隐:Java数组,走起!
数组的概念
同一种类型数据的集合,说白了就是一个容器。
♀ 小AD:明哥能解释一下不? ♂ 明世隐:我问你定义一个变量怎么定义,你学过的。 ♀ 小AD:我当然会了,这个很简单,比如我定义一个整形变量 i
int a= 1;
♂ 明世隐:那我现在要定义5个整形变量呢? ♀ 小AD:简单,如下:
int a1= 1; int a2= 2; int a3= 3; int a4= 4; int a5= 5;
♂ 明世隐:那定义100个呢? ♀ 小AD:你逗我玩呢?不就继续定义下去就行了吗?谁不会啊,真是的。 int a1= 1; int a2= 2; int a3= 3; int a4= 4; int a5= 5; int a6= 6; … int a100= 100;
♂ 明世隐:很好,那你定义1000个吧。 ♀ 小AD:不,我就不! ♂ 明世隐:哈哈,昏倒了吧,定义变量没问题,你看这里要定义100个变量,类似这种相同类型的,一个个的定义就很麻烦,其实可以用数组来定义,一个变量就够了。 ♀ 小AD:是啊,我刚才写的过程我也发现了这个问题。 ♂ 明世隐:那我们看看数组怎么定义吧。 ♀ 小AD:👌
数组的定义
静态初始化
数组的静态初始化一共分为以下两种类型:
格式 | 描述 |
---|
简化格式 | 数据类型 数组名称 = {值, 值,…} | 完整格式 | 数据类型 数组名称 = new 数据类型[] {值, 值,…} |
- 简化格式代码
public class ArrayDemo {
public static void main(String args[]) {
int data[] = {1, 2, 4, 66,99,100};
for(int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}
- 完整格式代码
public class ArrayDemo {
public static void main(String args[]) {
int data[] = new int[]{1, 2, 4, 66,99,100};
for(int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}
运行结果:
1 2 4 66 99 100
动态初始化
- 声明并开辟数组:
数据类型 [] 数组名称 = new 数据类型[长度];
int data[] = new int[6];
- 分布进行数组开辟
- 声明:数组类型 数组名称[] = null; 或者 数组类型[] 数组名称 =null;
- 开辟:数组名称 =new 数组类型[长度]; |
int data[] = null;
data = new int[6];
- 赋值
data[0]=1;
data[1]=2;
data[2]=4;
data[3]=66;
data[4]=99;
data[5]=100;
- 完整测试代码
public class ArrayDemo {
public static void main(String args[]) {
int data[] = null;
data = new int[6];
data[0]=1;
data[1]=2;
data[2]=4;
data[3]=66;
data[4]=99;
data[5]=100;
for(int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}
运行结果:
1 2 4 66 99 100
♀ 小AD:明哥,意思是这所有的这些数字,只要都存到这个叫data的数组里面了? ♂ 明世隐:对就这个意思,你如果有100个,甚至更多,都没关系,依次存进去就好,不像之前那样,需要一个个的定义了。 ♀ 小AD:int data[] = new int[6]; 这句就是定义一个长度为6的,可以存int类型的数组吧,看起来是这个意思。 ♂ 明世隐:对啊,这个容易看懂 ♀ 小AD:data[0]=1; data[1]=2;这种呢? ♂ 明世隐:这种是赋值操作,data[n]这种格式,n就是数组的下标,下标是从零开始的。 ♀ 小AD:也就是data[0]是取数组data的第一个元素,data[1]是数组的第2个元素,是这个意思吧? ♂ 明世隐:对就是这个意思,使用data[n]=XXX 就表示赋值操作;data[n]就是取值操作。 ♀ 小AD:好像有点明白了。 ♂ 明世隐:那就好,也就是利用数组来的话,这些都可以归类在一起,不用说定义好多变量,取值、赋值也很方便。 ♀ 小AD:恩恩呢。
数组的常见异常
- NullPointerException 空指针异常
代码示例:
public class ArrayDemo {
public static void main(String args[]) {
int data[] =null;
System.out.println(data[0]);
}
}
控制台打印
Exception in thread “main” java.lang.NullPointerException at java0.ArrayDemo.main(ArrayDemo.java:7)
♂ 明世隐:这个错误就很明显,在java里面也是比较典型,并不是针对数组,只不过数组中也会出现。 ♀ 小AD:这里的问题应该是定义了data这个数组,没有实例化吧,没有开辟空间。 ♂ 明世隐:所以千万要记住,数组属于引用数据类型,所以在数组使用之前一定要实例化,如果使用了没有开辟空间(实例化)的数组,则一定会出现 NullPointerException 异常信息。 ♀ 小AD:懂了明哥。
- ArrayIndexOutOfBoundsException 索引值越界。
代码示例:
public class ArrayDemo {
public static void main(String args[]) {
int data[] = new int[]{1, 2, 4, 66,99,100};
System.out.println(data[6]);
}
}
控制台打印
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 6 at java0.ArrayDemo.main(ArrayDemo.java:7)
♂ 明世隐:这个错误是不是很明显,直接告诉我们数组越界了,并且还有个数字 6 ♀ 小AD:这个6就是指data[6] 这里的那个6吧,数组的下标值。 ♂ 明世隐:对的,就是说6已经超出下标的范围了,这个数组的长度是6,下标是从0开始的,所以最小的下标是0,最大的下标是5,这里取了个下标为6的,肯定就索引越界了。 ♀ 小AD:嗯,懂了明哥,讲的真细。 ♂ 明世隐:😂
数组元素的默认值
♀ 小AD:明哥,我看你刚才说的,不赋值好像也可以哈,我看没赋值之前的代码,也没有报错的呀。 ♂ 明世隐:对,确实可以。 ♀ 小AD:那我没赋值,元素是什么值? ♂ 明世隐:默认值 ♀ 小AD:说了跟没说一样,我哪知道什么是默认值。 ♂ 明世隐:那我问你,int类型的变量默认值是多少? ♀ 小AD:int 我记得是0 ♂ 明世隐:那不就是了,你看我们今天的实例,int类型的数组,所以元素你如果没有设置值,则默认是0,上代码。
public class ArrayDemo {
public static void main(String args[]) {
int data[] = new int[6];
for(int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}
运行结果:
0 0 0 0 0 0
♀ 小AD:那double的默认是0.0咯 ♂ 明世隐:对啊,试试呗
public class ArrayDemo {
public static void main(String args[]) {
double data[] = new double[6];
for(int i = 0; i < data.length; i++) {
System.out.println(data[i]);
}
}
}
运行结果:
0.0 0.0 0.0 0.0 0.0 0.0
小AD出实例拉
♀ 小AD:明哥,我又有好主意了 ♂ 明世隐:so? ♀ 小AD:看我的代码 ♂ 明世隐:来,我顶得住!
public class ArrayDemo {
public static void main(String args[]) {
String zj[] = new String[10];
for(int i = 0; i < zj.length-1; i++) {
zj[i] = "失败";
}
zj[9]="胜利";
System.out.println("明哥战绩:");
for(int i = 0; i < zj.length; i++) {
System.out.println(zj[i]);
}
}
}
运行结果:
明哥战绩: 失败 失败 失败 失败 失败 失败 失败 失败 失败 胜利
♂ 明世隐:???,你这是要干嘛? ♀ 小AD:你这一波9连败,请问你顶得住? ♂ 明世隐:我这个10多年的编程功夫,我当然顶得住。 ♀ 小AD:哈哈哈! ♂ 明世隐:为什么最好又要给我一个胜利! ♀ 小AD:看明哥今天教这么细心的情况下,给你一盘胜利。 ♂ 明世隐:心意我领了,那走吧,上号。 ♀ 小AD:好嘞,今天要多打几盘哈,我前面输惨了。 ♂ 明世隐:嗯,今天带你上一星,稳稳的。 ♀ 小AD:啥,为什么就一星。 ♂ 明世隐:有3个1,决定今天只能带你上一星。 ♀ 小AD:哪三个1? ♂ 明世隐:第一个,你刚才给了我一个胜利;第二个是今天是1月份;第三个1是今天就学了一个变量数组。 ♀ 小AD:哦,我懂了,那不就是三个1相加吗(1+1+1=3),所以应该是3个星星,怎么是1星? ♂ 明世隐:是1*1*1 = 1 。 ♀ 小AD:明哥欺负人,太坏了你。 ♂ 明世隐:我这三十年功夫的嘴,你顶得住? ♀ 小AD:确实顶不住,有口臭! ♂ 明世隐:啊这😳😳,赶快打完收工! ♀ 小AD:收到!
小结
这节总结了“ 数组的定义与使用 ”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java的,【关注一波】不迷路哦。
评论区打卡一波让我知道你,明哥会持续关注你的学习进度哦!
导航
? 从零学Java系列目录索引 ?上一篇【27】Random随机数 ?下一篇【29】方法重载
热门专栏推荐
【1】Java小游戏(俄罗斯方块、飞机大战、植物大战僵尸等) 【2】JavaWeb项目实战(图书管理、在线考试、宿舍管理等) 【3】JavaScript精彩实例(飞机大战、贪吃蛇、验证码等) 【4】Java小白入门200例 【5】从零学Java、趣学Java 【6】Idea从零到精通
|