055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
本文知识点:数组的概念
数组的声明创建、初始化
在学习数组的声明创建、初始化前,我们可以和之前的变量的声明创建、初始化进行对比来学习。
那我们来看一下数组的声明,先来看一下语法格式。
数组的声明
数组声明语法格式1
数组声明格式1:
数据类型 [] 数组名;
变量声明格式:
数据类型 变量名;
数组声明相比变量声明,在数据类型后增加了一个中括号。而数组名的命名规则和变量名的命名规则是一致的。它本身是一个标识符,要满足标识符的命名规则。并且像变量名一样,如果数组名是由一个单词组成的,所有字母都是小写的。如果由多个单词组成的,第一个单词全部小写,从第二个单词开始,首字母全部大写。
数组声明语法格式2
数组声明格式2:
数据类型 数组名 [];
说明一下,为什么数组声明有这两种形式:
因为其他的编程语言,比如说C语言,C++,大家都是把中括号写在数组名的后面(即和我们学习的Java数组声明语法格式2相同)。Java为了和其他编程语言进行区分呢,Java就创建了自己的命名方式。就是把中括号写在数据类型的后面(数组声明语法格式1)。那么,第一种数组声明的语法格式才是我们在Java进行数组声明的时候,常用的形式。
案例练习如何声明数组——使用2种语法格式
声明一个整型数组如下:
int [] myIntArray ;
int myIntArray [];
以上两种声明方式都是正确的。
当然,如果你要生成其他类型的数组呢,就把相应的数据类型的名称进行改变即可。比如我们生成一个char类型的数组、生成字符串String类型的数组。
记住:字符串本身是一个类。这块内容后续我们学习面向对象的内容后,就知道了。借助类可以创建对象,所以String作为一个类,创建String类型的数组就是对象数组。
以上是数组的声明。
然后我们看下数组的创建。
数组的创建
数组创建形式1:
先声明、后创建
1、先去声明一个数组
2、再去创建数组
如何创建呢?数组创建形式1:
数组名 = new 数据类型[数组长度];
new是一个关键字,在后面的面向对象程序中呢,我们会遇到很多次new,new关键字其实是在创建一个对象。目前我们先知道有这个概念即可。对于数组问题,我们知道new是在创建数组即可。
例题:声明并创建一个长度为10的整型数组:
int [] arr;//声明数组
arr = new int[10];//创建数组
数组创建形式2:
声明数组的同时创建数组:
这个类似变量的初始化,但是数组中不叫初始化,稍后我们对初始化的内容进行演示。
数组创建形式2:
数据类型 [] 数组名 = new 数据类型[数组长度];
注意:
1、创建数组时,数组长度必须被指定,如果没有指定,是错误的。
2、声明时(赋值号=)左边的中括号写在数组名之前、数组名之后都是正确的。

数组在内存中的存储
我们前面学习变量的时候学习了:定义一个变量之后,变量就会在内存中存储。同样地,定义数组之后,也会在内存中分配内存空间,用来存储数组中的数据。而数组比较特别的一点是:数组在内存中分配的,肯定是一段连续的内存空间。
比如,我们定义一个整型的数组a:
int [] a = new int [5];
a是一个长度为5的整型数组,会在内存中开辟一块连续的内存空间。并且数组的默认值,对于整型数组来说,它的默认值都是0。所以我们知道,在这片连续的内存空间当中,每个数组元素的值都为0。就是说,长度为5的数组,它肯定有5个元素。那么这5个元素,它的每一个元素的元素值都是0。而我们的数组名本质是一个对象(数组是引用数据类型,即类类型,类创建的就是对象),它(数组名)是指向数组的第一个元素。这点在后面进行方法传值的时候是非常重要的。

这是数组的存储形式,需要注意的是:
数组的数组元素都有默认的元素值。后面我们会学习,其他数据类型创建的数组的数组元素的默认值都是什么!
这里,我们在强调一点,即局部变量。局部变量(在主方法中、在循环中我们学习的)都是没有默认值的。我们之前遇到过类似的问题,我们需要给局部变量进行赋值的。但是数组是有默认值的。因为数组的本质是对象。
数组的初始化
初始化的定义:声明的同时给变量赋值。
我们前面看到的new 数据类型[数组长度]; 不叫初始化,而叫做创建对象。

注意:
1、元素之间用逗号分隔(英文逗号)
2、整个代码书写都必须是在英文输入法状态之下的 否则,会报错。
上面的问题也是初学者经常会犯的错误。
那么数组长度是什么呢?数组长度:数组初始化时所给元素的个数,即为数组长度。
比如上面的例子中:
int [] arr = {1,2,3,4,5,6,7,8,9,10};
从1到10共计10个元素,那么数组长度就是10。
接下来,我们再看一下数组元素的引用。
数组元素的引用
前面提到过了,总说定义长度为10的数组,那么对于数组当中的每一个元素是如何进行表示的呢?
我们来看一下语法格式:
数组名[数组元素下标]
这里面,注意一下,数组元素下标是整型的数字,并且数组元素下标是从0开始的,其实整个“数组名[数组元素下标]“ 这样一个整体, 我们可以把这个整体看做是一个变量名。
我们看一下数组元素的引用的一个图例。
int [] a = {1,2,3,4,5,6,7,8,9,10};
10个元素对应10个连续的内存空间中。注意:数组一定是存放在连续的内存空间中。
我们把:
第1个元素表示为a[0], 注意,数组下标从0开始。
第2个元素表示为a[1],
第3个元素表示为a[2],
……
第10个元素表示为a[9],
这就类似变量和变量值之间的对应关系。比如,我们定义一个变量n:
int n = 10;
那么,n是变量名,10是变量值。同样的,a[0]表示数组a给1个位置处的数组元素起的名字,所以,我们说可以把a[0]这个整体看做一个变量名。而它所对应的值就是1。
数组元素引用的问题中,始终要记得:数组元素下标是从0开始。重要的事我已经说了三遍,不行你回顾文章数一数。

数组的长度
上面数组初始化的时候提过,数组长度就是数组元素的个数。
在数组中,还有一个属性 ,叫做length。length属性是表示数组长度的。如何使用属性呢?
使用格式:
数组名.length
使用方法类似我们前面从键盘接收数据时用到的sc.nextInt(); nextInt()有括号,而length属性没有括号。因为nextInt()是方法,需要括号。而length是属性,不需要括号。这些后面面向对象的知识会涉及到,现在有个了解就好了。(其实都是引用数据类型,对象引用属性或者对象饮用方法的形式)
Scanner sc = new Scanner(System.in);
sc.nextInt();

055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念的更多相关文章
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包
089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点
087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
随机推荐
- JDK源码分析-ArrayList
ArrayList 储存结构 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; transient Objec ...
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- LWPR
Scriptable Render Pipeline https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html Unity轻量 ...
- [U3D + GAD]Egametang开源服务器框架资源管理系统
Egametang开源服务器框架资源管理系统详解 http://m.gad.qq.com/article/detail/36409 ET GitHub https://github.com/egame ...
- servlet web项目连接数据库报错
报错信息类似这样: Wed May 27 14:15:54 CST 2020 WARN: Establishing SSL connection without server's identity v ...
- [oracle/sql]求员工表中每个部门里薪水最高的员工,那种sql最优?
开始正题前,先把我的数据库环境列出: # 类别 版本 1 操作系统 Win10 2 数据库 Oracle Database 11g Enterprise Edition Release 11.2.0. ...
- 车联网容器应用探索:5G下边缘云计算的车路协同实践
导语 | 5G网络下,多接入边缘计算(MEC)应运而生.结合TKEStack强大的集群管理能力和异构计算资源管理能力,腾讯打造了一个功能完备的边缘计算PaaS平台TMEC,提供了高精确度定位.视频处理 ...
- 基于jQuery的鼠标悬停时放大图片的效果制作
这是一个基于jQuery的效果,当鼠标在小图片上悬停时,会弹出一个大图,该大图会跟随鼠标的移动而移动.这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后 ...
- linux:apache-配置基于域名的虚拟机主机
一个http服务要配置多个站点,就需要用到虚拟机主机. 虚拟机主机一般有三类:1.基于域名 2.基于端口 3.基于ip 举例操作基于域名配置三个站点: 域名 站点目录 www.eejind.com ...
- springboot2.x基础教程:动手制作一个starter包
上一篇博客介绍了springboot自动装配的原理.springboot本身有丰富的spring-boot-starter-xx集成组件,这一篇趁热打铁加深理解,我们利用springboot自动装配的 ...