IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 从零学Java(28)之数组的定义与使用 -> 正文阅读

[Java知识库]从零学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 数据类型[] {值, 值,…}
  1. 简化格式代码
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]);
		}
	}
}
  1. 完整格式代码
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

动态初始化

  1. 声明并开辟数组:

数据类型 [] 数组名称 = new 数据类型[长度];

int data[] = new int[6];
  1. 分布进行数组开辟
  • 声明:数组类型 数组名称[] = null; 或者 数组类型[] 数组名称 =null;
  • 开辟:数组名称 =new 数组类型[长度]; |
int data[] = null;
data = new int[6];
  1. 赋值
data[0]=1;
data[1]=2;
data[2]=4;
data[3]=66;
data[4]=99;
data[5]=100;
  1. 完整测试代码
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:恩恩呢。

数组的常见异常

  1. 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:懂了明哥。

  1. 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知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:54:26  更:2022-05-08 07:54:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:43:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码