文章目录

  • 一/简单回顾
  • 二/ 引子
  • 三/ 数组
    • (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();,这里是圆括号,数组是方括号。

这两个写法很像,xarray都是变量名,Scannerint[]都是一个类型,后面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基础--数组的认识(通透!!!)相关推荐

  1. Java基础---数组练习(最大值、最小值的索引)

    Java基础–数组练习 1.将一维数组的遍历,封装成方法public static void arrayBianli(int[] arr) {for(int i = 0;i<arr.length ...

  2. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  3. Java基础数组编写酒店管理系统

    文章目录 Java基础数组编写酒店管理系统 需求说明: 实现代码: ①酒店类(Hotel.java) ②房间类(Room.java) ③酒店管理测试类(HotelMgtSystem.java) 测试结 ...

  4. Java 基础——数组解析

    数组对于每一门编辑应语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 可以声明一个数组变量,如numbers[100 ...

  5. Java基础---数组内容详解

    数组 概念:内存中开辟的一块连续的空间,用来存储有限个相同数据类型的数据定义格式:元素的数据类型[] 数组名称 = new 元素的数据类型[数组长度]简化格式:元素的数据类型[] 数组名称 ={值1, ...

  6. 【Demo 0003】Java基础-数组

    本章学习要点:       1.  了解数组的基本概念:       2.  掌握数组使用方法: 一.数组的基本概念 1.  数组定义: 同一数据类型数据的集合,在Java中它也是一种数据类型:数组按 ...

  7. Java基础——数组实现+排序实现福利彩票抽奖

    import java.util.Arrays; import java.util.Random; import java.util.Scanner;/*** 31选7* 1,获取中奖号码* 1,需要 ...

  8. 康师傅-java基础-数组

    p156 - p 一维数组 声明.分配空间.赋值 type[] var; Java 语言中声明数组是不能指定其长度(数组中元素的数),例如:int a[5]; 动态初始化:数组声明且为数组元素分配空间 ...

  9. 黑马程序员——Java基础---数组与集合之间转换

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

最新文章

  1. python编程题-分享13个python编程笔试题
  2. 12.委托是什么?委托的property声明用什么属性?为什么?
  3. 【JUC并发编程05】集合的线程安全
  4. sql server中将一个字段根据某个字符拆分成多个字段显示
  5. 和程序员在一起是怎样的体验
  6. node.js常见的模块
  7. Java面向对象入门
  8. Redis:11---Set对象
  9. ssrf漏洞内网渗透_渗透小白看了也能明白的SSRF
  10. ECCV 2020 论文大盘点-3D人体姿态估计篇
  11. Oracle - SELECT 1 FROM table; SELECT COUNT(1) FROM table;
  12. oppo面经-java开发
  13. 海思3519A配置NFS文件系统(永久)
  14. 甲骨文裁员后续:近万招聘者哄抢甲骨文前员工
  15. unity素材二:三个老头欧系战士模型带动作特效
  16. 儿童手工制作日历_变废为宝的手工日历小台历制作教程
  17. 建站百科|全网最全、最系统的域名申请教程,不看吃亏!!!
  18. window.print 打印文章时设置字体及解决每页跨页截断问题
  19. 教您使用FPGA来画铅笔画
  20. BGP路由协议的那些事?(上)

热门文章

  1. 二维码会成为杀手级应用吗?
  2. c# 二进制文件编程实践
  3. java switch语句_Java switch语句
  4. 【思特奇杯·云上蓝桥·算法集训营】第四周
  5. 程序员讲装修——平台选择
  6. linux第7章进程状态和控制
  7. C++ 将二叉树以前序遍历的顺序转换成链表
  8. SQL/ORACLE_基础英语词汇
  9. 《狼图腾》--农耕民族与游牧民族的冲突
  10. 飞控之扩展卡尔曼滤波(附matlab和C代码)