从零学Java(28)之数组的定义与使用
Posted 编程界明世隐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零学Java(28)之数组的定义与使用相关的知识,希望对你有一定的参考价值。
作者简介
作者名:编程界明世隐
简介: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从零到精通
以上是关于从零学Java(28)之数组的定义与使用的主要内容,如果未能解决你的问题,请参考以下文章