Java基础--数组的认识(通透!!!)
文章目录
- 一/简单回顾
- 二/ 引子
- 三/ 数组
- (1)概念
- (2)性质
- (3)写法
- 1)数组的声明(创建)
- 2)举例
- 3)补充
- (4)数组的初始化
- 1)静态初始化
- 2)动态初始化
- 3)总结
- (5)数组元素的访问并应用
- 1)访问数组元素
- 2)取出数组元素
- 3)替换数组元素
- 4)数组元素的遍历(轮询)
- <1> 分析
- <2> 正常循环遍历
- <3> 增强for循环
- <4> 总结
- (6)索引的范围问题
- (7)总结
一/简单回顾
基本知识点
- 数据类型
- 常量变量
- 运算符号
- 分支结构:if switch
- 循环结构: for while do…while
循环嵌套关系: break continue 标记
二/ 引子
之前我们在学循环的时候,讲到一个例子,不知道大家还记不记得。
int score=90;
根据score成绩来进行区间的判定,不及格/及格/中等/良好/优秀/满分。
之前解决这个问题的时候,我们用到if else
语句,后来又可以用switch
语句来解决。
那么现在,我们重新来想一下这个问题。
①score
是一个变量空间(栈内存中的一块空间),可以理解为一个小容器。小容器里面存储的是一个学生的成绩。
②变量有什么特点?
1.变量在创建的时候,类型是固定的。
2.空间内的内容只能存放一份。
现在再来想一个问题。
如果想将5个同学的成绩都存起来,那我们就需要5个变量。
每次多一个变量,就会多一个名字,不方便。
在现实中,我们就会给他们编一个班级,以班级为的单位。这样就方便多了。
那么,我们同样可以用这种方式来存储数据。
下面要讲到,这种方式就是用数组来存储。
三/ 数组
(1)概念
来看看数组这俩字:
数:数据类型
组:一组元素
数组是一组数据类型相同的数据的结合。
数组也可以看作一份容器。
和变量不同的是,变量空间只能存放一份,而数组可以存储一组内容。
将这些数据统一在一起管理起来,更加方便。
(2)性质
之前说过的基本数据类型有byte
/short
/int
/long
/float
/double
/char
/boolean
。
而引用数据类型有数组
/类
/接口
/枚举
/注解
等,包括之前咱们接触过的String
/Scanner
/Math
。
我们可以看到,数组是一个引用数据类型。
(3)写法
1)数组的声明(创建)
①起名字
在学变量的时候,咱们是先定义一下,如int score
。
那么,同样,在用数组之前,也需要定义一下。
刚才说过,数组和变量类似,可以当作一个容器,存在于栈内存或堆内存当中,在里面开辟了一个空间。
既然是开辟了一个空间,那么就要先给它起一个名字。
②添加数据类型
那么数组里面存什么呢?
通过上面的概念,我们知道,数组是一组数据类型相同的数据的结合。
虽然数组里面是一组数据,但是要求,数据类型要相同!!!
所以我们在给数组声明的时候,要说明这里面存的是什么。
在名字前面,我们需要添加数据类型。
③添加中括号
现在我们得到这样的效果:数据类型 数组名字;
咦,这样不就和变量声明格式一样了吗?怎么表示它是一个数组呢?
为了区分,我们在数据类型之后,添加一个中括号[ ]
,来表示它是一个数组形式。
如果没有中括号,就表示是一个变量空间,加了中括号,就是数组。
2)举例
通过上面的分析,我们可以得到数组的定义:数据类型[] 数组名字;
。
那么我们现在举几个例子。
我想创建一个数组,
来存储一些int类型的整数,可以这样写:int[] x;
。
又比如,存储一组字符类型的数据,可以这样写:char[] y;
。
存储一些布尔类型的值,可以这样写:boolean[] z;
。
存储一些字符串形式的数据,可以这样写:String[] m;
。
⭐️ 数组本身是一个引用数据类型,但是,数组内存储的类型,可以是基本类型,也可以是引用类型。
(里面的每一个元素,什么都可以,只要是相同的类型就行)
3)补充
在书写数组的时候,我们会加上一组中括号表示它是数组。
那这个中括号的位置可以写在哪里呢?
在上面,我们将它写在了数据类型的后面,就是这样:int[] x;
。
但是,写在数组名字后面也是可以的,就像这样:int x[];
。
在这里,推荐大家写第一种,写在数据类型后边的,比较标准。
int[] x;
这种写法,可以理解为,x
是变量名,前面的int[]
整体算作一个类型。
在这里,主要想告诉大家,两种写法都可以,都好用,编译器都可以识别,但是规范来说,还是第一种。
在笔试题中,以下这几种写法都是可行的啦。
int[] x; -->规范
int []x; -->别扭的很(和上面的写法类似,只不过将中括号后移了一点)
int x[]; -->也可以这样写,但是识别的时候,不好看。
(4)数组的初始化
数组声明之后,我们需要往里面存东西。
数组是一个引用数据类型,既然是引用数据类型,赋值有一个专业的名词,叫做初始化
。
数组的初始化:创建数组并且给数组赋值。
数组的初始化有两种:静态初始化/动态初始化。
1)静态初始化
举个例子,现在我们要创建一个数组,里面存储整数类型,起个名字叫array。
那么可以这样定义:int[] array;
现在要将它初始化,直接将值赋给它?
有的小伙伴想这样写,都不对哈,看下面的情况(都不对的呦):
<1> 给一个常量是不对的
int[] array=10; -->直接给一个10,肯定不对,数组里面又不是只有一个10,是有好多个这样的类型。
<2> 给一个字符也不对
int[] array=`a`;
<3> 给一个字符串也不对
int[] array="abc"; -->类型不统一
⭐️数组是一个引用数据类型,我们以后,见到的所有引用数据类型,只要想创建,通过的方式是统一的。要new
一下。
这里,就是开辟一个新的数组,给array赋上。
那new
什么呢?
前面都规定好了,是一个数组类型(int[]
)。
那么我们肯定要new
一个和前面类型一致的!前面的类型是什么,后面就要new什么。
现在我们要的是一个int[]
数组类型,那么后面就要new
一个数组类型啦。
就像这样:int[] array=new int[];
还记得之前我们说过的Scanner吗?这样写的来着:Scanner x=new Scanner();
,这里是圆括号,数组是方括号。
这两个写法很像,x
和array
都是变量名,Scanner
和int[]
都是一个类型,后面new
的过程,都相当于开辟了一个新的空间。
其实这里我们称之为对象
更合理一点。
现在我们new过了,那数组里面有什么呢?
我们就需要在后面加上一组大括号,就像这样:int[] array=new int[]{};
。
大括号表示一组元素,每一个元素都是一个int类型的整数。
现在我们只需要在大括号里面添加数值即可,比如添加10,20,30,40,50这些数据。
那么就可以这样写:int[] array=new int[]{10,20,30,40,50};
。
这样就写好了,数组的静态初始化的标准写法。
从这个写法上,我们可以看到,数组的长度是5(数组里面的数据的个数);还可以看到每一个元素。
静态初始化,可以看到数组的长度和内容。
好啦,标准的静态初始化写法,我们都已经知道了。
现在再来看一下,它的简洁写法:int[] array={10,20,30,40,50};
。
可以将new
的过程省去不写。
为啥可以这样呢?
数组变量名(array
)之前,已经有了定义类型( int[]
)。
那么,后面new
出来的类型肯定和前面定义的一致。
在数组定义的时候,前面如果有定义,那么后面的new
可以省去不写,变成简洁的写法。
但是,如果现在只是一个变量名,就不能省去new
的过程了!!!
就像这样:
int[] array;
... ...
... ...
array=new int[]{10,20,30,40,50};
1.前面如果有数组类型的定义,就可以省去后面new的过程;
2.但是,如果前面只是一个变量,虽然之前这个变量array已经定义好了类型,但是此时编译的时候,它分不清变量到底什么类型的。这个时候,就必须new一下。
最后,总结一下,静态初始化的两种写法:
int[] array=new int[]{10,20,30,40,50}; -->标准写法
int[] array={10,20,30,40,50}; -->简洁写法
2)动态初始化
Java基础--数组的认识(通透!!!)相关推荐
- Java基础---数组练习(最大值、最小值的索引)
Java基础–数组练习 1.将一维数组的遍历,封装成方法public static void arrayBianli(int[] arr) {for(int i = 0;i<arr.length ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- Java基础数组编写酒店管理系统
文章目录 Java基础数组编写酒店管理系统 需求说明: 实现代码: ①酒店类(Hotel.java) ②房间类(Room.java) ③酒店管理测试类(HotelMgtSystem.java) 测试结 ...
- Java 基础——数组解析
数组对于每一门编辑应语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 可以声明一个数组变量,如numbers[100 ...
- Java基础---数组内容详解
数组 概念:内存中开辟的一块连续的空间,用来存储有限个相同数据类型的数据定义格式:元素的数据类型[] 数组名称 = new 元素的数据类型[数组长度]简化格式:元素的数据类型[] 数组名称 ={值1, ...
- 【Demo 0003】Java基础-数组
本章学习要点: 1. 了解数组的基本概念: 2. 掌握数组使用方法: 一.数组的基本概念 1. 数组定义: 同一数据类型数据的集合,在Java中它也是一种数据类型:数组按 ...
- Java基础——数组实现+排序实现福利彩票抽奖
import java.util.Arrays; import java.util.Random; import java.util.Scanner;/*** 31选7* 1,获取中奖号码* 1,需要 ...
- 康师傅-java基础-数组
p156 - p 一维数组 声明.分配空间.赋值 type[] var; Java 语言中声明数组是不能指定其长度(数组中元素的数),例如:int a[5]; 动态初始化:数组声明且为数组元素分配空间 ...
- 黑马程序员——Java基础---数组与集合之间转换
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
最新文章
- python编程题-分享13个python编程笔试题
- 12.委托是什么?委托的property声明用什么属性?为什么?
- 【JUC并发编程05】集合的线程安全
- sql server中将一个字段根据某个字符拆分成多个字段显示
- 和程序员在一起是怎样的体验
- node.js常见的模块
- Java面向对象入门
- Redis:11---Set对象
- ssrf漏洞内网渗透_渗透小白看了也能明白的SSRF
- ECCV 2020 论文大盘点-3D人体姿态估计篇
- Oracle - SELECT 1 FROM table; SELECT COUNT(1) FROM table;
- oppo面经-java开发
- 海思3519A配置NFS文件系统(永久)
- 甲骨文裁员后续:近万招聘者哄抢甲骨文前员工
- unity素材二:三个老头欧系战士模型带动作特效
- 儿童手工制作日历_变废为宝的手工日历小台历制作教程
- 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
- window.print 打印文章时设置字体及解决每页跨页截断问题
- 教您使用FPGA来画铅笔画
- BGP路由协议的那些事?(上)