搜索
首页Javajava教程[Java入门笔记]Java语言基础(五):数组

简介

数组可用用于存储存储多个数据,Java的数组要求所有的数组元素具有一种相同的数据类型。一旦数组初始化完成,数组在内存中的空间被固定下来,长度不可改变,即使把数组的元素清空,所占用的空间依然被保留。

生活案例:博物架

100.png

每一个物品架都是相同类型的物品,长度不变,即使把物品下架,物品架依然不会改变。

 

定义数组

101.png

使用数组4步走:

1、声明数组

Java中支持两种格式的数组定义格式:

类型[] 变量名; 类型 变量名[];

 例:

int[] a;int b[]; //两种方法都行,不过建议使用第一种。

 

声明数组也就相当于上面例子中购买了一个定制的物品架(数组)到博物馆中,但是还没有确定物品架的大小(数组的大小),也还没有往物品架上放东西(数组元素)。

2、分配空间

 分配空间也就是对数组进行初始化,初始化分为两种方式:

第一种:静态初始化

静态初始化的语法格式如下:

数据类型[] 变量名 = new 数据类型[]{数据1, 数据2,数据3,......};

 例:

int[] a = new int[]{4,2,64,12,3}; //将这些数存放在数组中,数组的大小(长度)为花括号中元素的数量,该例子中大小为5String[] b = new String[]{"张三", "李四", "王五"}; //所有数据的类型必须为定义的数据类型int[] c = {2,5,7}; //也可以使用这样的简写方式

 

这就如同购买一个定制的物品架回来,同时将展示品放到物品架中一起购买回来,而物品架的大小就有多少物品就就有多大。

第二种:动态初始化

动态初始化是只指定数组的大小,由系统为每个元素指定初始值得一种方式。语法格式如下:

数据类型[] 变量名 = new 数据类型[大小];

 

在这个格式中, 需要为其指定一个整数类型的数组大小,指定后,将确定数据的长度,数组能够存放多少元素。同时为所有元素指定一个默认初始值。

例:

int[] a = new int[5]; //定义一个数组,长度为5,也就是说,能够存放5个int类型的数据,同时,默认5个值初始化为0

 

初始化时默认值按以下规定设置:

byte,short,int、long默认为0;

float、double默认为0.0;

char默认为'\u0000';

boolean默认为false;

其他引用类型默认为null;

3、赋值

 尽管你已经初始化好了数组,但是我们还是可以通过通过赋值的方式改变里面的数据。那么已经初始化好了数组,确定了数组的大小,我们该如何为没一个数组元素赋值呢?

数组中还有一个下标的概念,数组初始化的时候,会为每个元素分配一个下标,就和物品展示架上的编号一样,我们可以通过下标为每个元素重新赋值。

数组的下标从0开始,也就是说,第一个元素的下标为0,至于为什么要从0开始,我们后面再探讨一下,我们先看看赋值的例子:

int[] a = new int[3]; //定义一个长度为3的int类型数组,里面3个元素值已默认为0;a[0] = 4; //设置第一个元素值为4a[1] = 5; //设置第二个元素值为5a[2] = 7; //设置第三个元素值为7

102.png

为什么数组下标从0开始?

首先我们需要知道的是,程序是在电脑内存中运行的,当我们的程序开始处理数据时,会在内存中开辟一个小小的空间用来存储数据,在代码中也就是定义一个变量,如:

int a = 5;

 

定义一个int类型变量,值为五,而在内存中表示为,在内存中分配一小块内存,命名为a,里面存的值为5。

103.png

而我们是如通过a这样一个变量名得到内存中的值得呢?是因为每一小块内存都会有一个地址,就如同我们居住的家有一个地址一样,通过这个地址,通过这个地址,就能知道里面住的是谁。

二数组在内存中是以相连的位置存储的,方便对数组的操作,我们看一个例子:

int[] b = new int[3]; //定义一个int类型的数组,长度为3,里面的元素默认值为0

 

 此时内存中是这样的:

104.png

数组中获得数据也是如此,如何知道b数组每个元素的数据呢?首先我们知道通过b这个数组在内存中的哪个位置,因为数组在内存中是一个相连的内存空间,所以b[0]的位置就等于b+0,而b[1]的位置就为b+1,b[2]=b+2,......以此类推,知道了数组所有元素的位置。而数组中第一个元素正好是在数组中开头的位置,用b[0]表示,则刚好是b表示的位置,而用1表示第一个元素的位置,则需要表示为a+1-1。

4、处理数据

在前面的内容中,我们已经定义了数组,初始化了数组,赋了值,那么如何使用数据呢,其实前面已经分析过,我们通过数组下标来为数组赋值,也通过数组下标得到每个数组元素的值。

int[] a = new int[3]; a[0] = 3; a[1] = 4; a[2] = 5; System.out.println(a[1]); //得到数组的第二个位置的值,将它输出//我们也可以通过循环遍历数组中每个元素for(int i = 0; i < a.length; i++){ System.out.println(a[i]); //循环打印出数组中每个元素}

 

在上面的例子中,循环打印的时候,我们看到,使用了a.length,通过 数组变量名.length 可以得到数组的长度,所以上面我们通过a.length得到数组的长度为3,循环3次,打印出数组的元素。

不应该访问不存在的下标

上面我们知道,我们控制数组是通过 变量名[下标] 来为变量赋值或者得到值,而如果访问超过了数组长度的下标时,则会出现异常。

int[] a = new int[2]; a[5] = 2; //a数组长度只有2个长度,而我们通过下标5访问第6个元素,实际a数组不存在这个位置,则会出现异常。

 

 

二维数组或多维数组

上面我们讲的都是在数组中存储一种基本数据类型或引用数据类型,而我们也可以在数组中存储数组:

105.png

上面我们在一个数组元素中存储了另外一个数组元素,里面那个数组存储了一种数据类型int的值,我们称这样的数组为二维数组。

二维数组的定义,初始化和赋值

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

 

长度1为外面一层数组的长度,长度2位里面一层的长度。

定义和初始化上图中的形式,我们可以这样:

int[][] a = new int[3][3]; a[0][0] = 2; //访问时前面一个方括号的数字表示外面一层数组的元素下标,第二个方括号的数字表示里面一层的数组的下标a[0][1] = 3; a[0][2] = 4; a[1][0] = 5; a[1][1] = 3; a[1][2] = 9; a[2][0] = 90; a[2][1] = 70; a[2][2] = 85;

 

 

 

我们也可以将二维数组定义成这样一种格式:

106.png

int[][] a = new int[3][]; //在定义初始化时设置外面一层长度为3,不设置里面一层的长度,
a[0] = new int[2]; //初始化里面每一层,设置长度a[1] = new int[1]; a[2] = new int[3]; a[0][0] = 3; //为每一个元素赋值a[0][1] = 4; a[1][0] = 9; a[2][0] = 90; a[2][1] = 70; a[2][2] = 85;


而三维数组就是数组里面的数组里面存放的是数组~~~~~以此类推可以有n多维数组,不过一般人使用的不多  ~~~^_^~~~

 以上就是[Java入门笔记]Java语言基础(五):数组的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java语言中的智慧农业应用开发介绍Java语言中的智慧农业应用开发介绍Jun 10, 2023 am 11:21 AM

随着时代的发展,农业领域也开始借助现代科技手段升级转型,智慧农业也因此应运而生。Java作为一种性能优异、可移植性强的计算机编程语言,具备着较高的普及度和应用价值,成为智慧农业应用开发的重要解决方案之一。本文旨在介绍Java语言中智慧农业应用的开发流程、应用场景和优势点等方面的内容。一、Java语言中智慧农业应用的开发流程智慧农业应用的开发流程分为需求分析、

如何在Java中将JSON数组转换为CSV?如何在Java中将JSON数组转换为CSV?Aug 21, 2023 pm 08:27 PM

JSON可以用作数据交换格式,它是轻量级的且与语言无关。一个JSONArray可以解析文本字符串以生成类似于向量的对象,并支持java.util.List接口。我们可以使用org.json.CDL类将JSON数组转换为CSV格式,它提供了一个静态方法toString(),用于将JSONArray转换为逗号分隔的文本。我们需要导入org.apache.commons.io.FileUtils包,以使用writeStringToFile()方法将数据存储在CSV文件中。语法publicstaticj

ChatGPT Java:如何构建一个精准的语义搜索引擎ChatGPT Java:如何构建一个精准的语义搜索引擎Oct 24, 2023 am 10:21 AM

ChatGPTJava:如何构建一个精准的语义搜索引擎,需要具体代码示例引言:随着互联网的迅速发展,信息爆炸式增长,人们在获取所需信息的过程中,往往会遇到搜索结果质量不佳、不准确的问题。为了提供更精准、高效的搜索结果,语义搜索引擎应运而生。本文将介绍如何使用ChatGPTJava构建一个精准的语义搜索引擎,并给出具体的代码示例。一、了解ChatGPTJ

Java中的二叉树结构详解Java中的二叉树结构详解Jun 16, 2023 am 08:58 AM

二叉树是计算机科学中常见的数据结构,也是Java编程中常用的一种数据结构。本文将详细介绍Java中的二叉树结构。一、什么是二叉树?在计算机科学中,二叉树是一种树形结构,每个节点最多有两个子节点。其中,左侧子节点比父节点小,右侧子节点则比父节点大。在Java编程中,常用二叉树表示排序,搜索以及提高对数据的查询效率。二、Java中的二叉树实现在Java中,二叉树

Java语言中的图像处理算法介绍Java语言中的图像处理算法介绍Jun 10, 2023 pm 10:03 PM

Java语言中的图像处理算法介绍随着数字化时代的到来,图像处理已经成为了计算机科学中的一个重要分支。在计算机中,图像是以数字形式存储的,而图像处理则是通过对这些数字进行一系列的算法运算,改变图像的质量和外观。Java语言作为一种跨平台的编程语言,其丰富的图像处理库和强大的算法支持,使得它成为了很多开发者的首选。本文将介绍Java语言中常用的图像处理算法,以及

Java语言中的金融应用开发介绍Java语言中的金融应用开发介绍Jun 10, 2023 pm 02:01 PM

Java语言是一种广泛应用于金融领域的编程语言。由于其强大的功能和高效的性能,Java语言成为了金融机构开发软件的首选语言。本文将介绍Java语言在金融应用开发中的重要性,并介绍一些常见的金融应用程序。一、Java语言在金融领域中的应用Java语言在金融领域中的应用已经十分广泛,其主要优势包括:1.跨平台能力Java语言具有跨平台能力,这意味着同一段Java

Java语言下对接百度AI接口实现图像风格迁移的方法与步骤Java语言下对接百度AI接口实现图像风格迁移的方法与步骤Aug 12, 2023 pm 04:00 PM

Java语言下对接百度AI接口实现图像风格迁移的方法与步骤引言:图像风格迁移是一种有趣的技术,在艺术和媒体创作中具有广泛的应用。百度AI提供了图像风格迁移的API,使开发者能够方便地使用这一功能。本文将介绍如何使用Java语言对接百度AI接口,实现图像风格迁移的方法与步骤,并提供示例代码。步骤一:申请百度AI接口的访问权限要使用百度AI提供的图像风格迁移AP

Java语言中的Spring Cloud框架介绍Java语言中的Spring Cloud框架介绍Jun 09, 2023 pm 10:54 PM

Java语言中的SpringCloud框架介绍随着云计算和微服务的流行,SpringCloud框架成为了Java语言中构建云原生应用的首选框架之一。本文将介绍SpringCloud框架的概念和特点,以及如何使用SpringCloud构建微服务架构。SpringCloud简介SpringCloud框架是基于SpringBoot的微服务框架。它为

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!