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 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...
随机推荐
- python练习 数字不同数之和+人名最多数统计
数字不同数之和 描述 获得用户输入的一个整数N,输出N中所出现不同数字的和. ...
- AlexNet实现cifar10数据集分类
import tensorflow as tf import os from matplotlib import pyplot as plt import tensorflow.keras.datas ...
- Flink run提交参数
折腾了好几天,终于搞定了Flink run提交参数,记录一下. 背景: 之前一直报错,akka,AskTimeoutException,尝试添加akka.ask.timeout=120000s, 依然 ...
- wmz的数数(数状数组)
wmz的数数(数状数组) 题目描述 \(wmz\)从小就显现出了过人的天赋,他出生的第三天就证明了哥德巴赫猜想,第五天就证明了质能方程,出生一星期之后,他觉得\(P\)是否等于\(NP\)这个问题比前 ...
- 【pytest】teardown里的yield和addfinalizer
在之前介绍pytest中的fixture用法的文章中https://zhuanlan.zhihu.com/p/87775743,提到了teardown的实现. 最近在翻pytest官方文档的时候,又发 ...
- java 注解开发
目录 注解 JDK自带的注解三个 注解分类 按照运行机制 按照来源分类 自定义注解的语法要求 元注解 解析注解 获取注解的注解 Spring中的注解 组合注解 注解 JDK自带的注解三个 @Overr ...
- 索引对单列极值查询的显著性影响(百万级别表单列最值查询 Cost由1405变成3)
表结构: create table hy_emp( id number(7,0) primary key, name nvarchar2(20) not null, salary number(5,0 ...
- SpringMVC-整合SSM
整合SSM 目录 整合SSM 1. 设计流程 2. 创建一个数据库表 3. 配置依赖 4. 准备项目框架 5. Mybatis层 1. 编写实体类 2. 编写Mapper接口和xml 1. Mappi ...
- pytest(1):安装与使用
pytest介绍 1.pytest是比较成熟的一款python测试框架 2.简单灵活,容易上手,对比unitest框架更丰富. 3.单元测试和复杂的功能测试,都支持. 4.同时支持selenium,a ...
- vue3 报错解决:找不到模块‘xxx.vue’或其相应的类型声明。(Vue 3 can not find module)
最近在用 vue3 写一个小组件库,在 ts 文件中引入 .vue 文件时出现以下报错: 报错原因:typescript 只能理解 .ts 文件,无法理解 .vue文件 解决方法:在项目根目录或 sr ...