Java数组详解

​@TOC

第一章、数组的概念介绍

1.1)数组的概念

①数组就是用来储存数据的容器,可以存储同一种类型的数据,是同一种数据类型的集合。实现对这些数据的统一管理。如果数组中存储的是基本类型数据,我就不能往里面存引用类型数据。数组中存储的是引用类型数据,我就不能往里面存基本类型数据。

②数组容器存储的可以是引用类型数据或者基础类型数据,但数组本身属于引用类型变量。

③数组是线性数据结构,有固定长度和大小的概念数组长度一旦确定了,就不可以改变

,我们称为:长度length。

④数组有索引的概念,数组中的元素从0开始编号,这个编号我们称为:下标index,因为是从0开始编号所以索引最大值为:length-1。

1.2)数组的初始化

以创建一个长度为5的int类型的数组举例

①动态初始化,初始化只确定元素个数,等需要时再添加元素

数组中保存的数据类型[] 数组的名字 = new 数组中保存的数据类型[存储的元素个数]

    int[]      arr  = new int[5];

②静态初始化2,初始化的时候就确定 里面的元素

数组中保存的数据类型[] 数组名字 = new 数组中保存的数据类型[]{元素1,元素2,元素3,元素4,元素5};

                int[]    arr = new int [] {1,2,3,4,5};

③静态初始化2,初始化的时候就确定 里面的元素

数组中保存的数据类型[] 数组名字 = {元素1,元素2,元素3,元素4,元素5};

               int[]    arr  = {1,2,3,4,5};

​​

第二章、数组的使用

2.1)数组添加元素的方法/数组的赋值

在动态初始化后我们要单独为数组添加元素,也就是赋值操作。

①赋值操作,添加元素,设置元素值操作 ==> 数组名配合下标,注意:下标从零开始。

数组名[下标]=需要添加的元素;arr [0] = 1 ;
arr [1] = 2 ;
arr [2] = 3 ;
arr [3] = 4 ;
arr [4] = 5 ;

2.2)数组的遍历

①当我们需要查看数组里面的内容。最基础的是使用for循环遍历的方法查看

        //遍历arr数组元素,打印元素内容看效果for(int i = 0;i <= arr.length - 1;i++){//数组名arr  配合下标i  获取元素值System.out.println(arr[i]);}

②使用do while循环遍历arr数组元素

//使用do while循环遍历arr数组元素,打印查看效果int j = 0;do{System.out.print(arr2[j] + " ");j++;}while(j <= arr2.length - 1);

2.3)数组排序

①数组之选择排序的升序

选择排序:从数组空间中选择第一个数据,和后面空间中的数据进行比较,比较完之后将最小的数据和当前的第一个空间中的数据进行互换位置。然后再选择第二个元素和除第一个空间中的数据进行比较,同样找出最小的数据,将两个空间中的数据的位置互换。后面的数据以此类推,一直到将所有的数据变成从小变大的数据为止

//定义arr数组
int[] arr = {11,22,33,44,55,66};//外层循环控制轮数
for(int i = 0;i <= arr.length - 2;i++){//内层循环控制每一轮执行的次数for(int j = i + 1;j <= arr.length - 1;j++){if(arr[i] > arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}

②数组之冒泡排序的升序

冒泡排序(Bubble Sort):通过对排序序列从前向后(从下标较小的元素开始)依次比较相邻元素的值,若发现逆序则交换,使得值比较大的元素逐渐从前向后移动,就像水底下的气泡一样逐渐向上冒。

//定义arr数组
int[] arr = {11,22,33,44,55,66};//冒泡排序
for(int i = 0 ;i< arr.length -1; i++){for(int j = 0; j<arr.length-1-i; j++){if(arr[j]>arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}

2.4)数组的最小值

//定义arr数组
int[] arr = {11,22,33,44,55,66};int min = arr[0];	//假设0索引位置的元素是最小的for(int i = 0;i <= arr.length - 1;i++){if(arr[i] < min){//说明当前元素的内容小于min的值,为min重新赋值min = arr[i];}}

2.5)数组的反转

①第一种反转

//定义arr数组
int[] arr = {11,22,33,44,55,66};//反转
for(int i = 0;i < arr.length / 2;i++){int temp = arr[i];arr[i] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = temp;

②第二种反转

//定义arr数组
int[] arr = {11,22,33,44,55,66};for(int i = 0,j = arr.length - 1;i < j;i++,j--){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}

③第三种反转

//定义arr数组
int[] arr = {11,22,33,44,55,66};//创建新的int数组,长度和原数组保持一致
int[] newArr = new int[arr.length];//反向遍历arr数组元素,赋值操作int i = arr.length - 1;		//此处的i只能关联arr数组元素位置int j = 0;					//此处的j关联的是newArr数组元素位置while(i >= 0){newArr[j] = arr[i];i--;j++;}}

2.6)数组中常见的异常

①空指针异常

//运行时异常:	空指针异常java.lang.NullPointerException//使用静态初始化创建数组
int[] arr2 = {11,22,33,44,55};//使数组为null,里面不在有数据
arr2 = null;//arr是null的情况下去使用他。null值无法进行调用的行为,
//一旦null值调用了类的成员(属性、方法),一定空指针!!!System.out.println(arr2[0]);
System.out.println(arr2.length);

②越界异常

//运行时异常:	数组下标越界异常
//java.lang.ArrayIndexOutOfBoundsException: 1000
//java.lang.ArrayIndexOutOfBoundsException: -10//先创建长度为10的数组	
int[] arr = new int[10];//我把下标写成了1000,可是数组的长度并没有这么长,于是出现越界异常
System.out.println(arr[1000]);//我把下标写成了-10,可是数组的长度不可能为负数,于是出现越界异常
System.out.println(arr[-10]);

第三章、二维数组

​​
本质上就是以数组作为数组元素的数组。

3.1)二维数组定义

①动态创建一个二维数组,包含五个一维数组,每个一维数组的长度尚未确定。

//创建二维数组
int[][] arr = new int[5][];

②动态创建一个二维数组,包含五个一维数组,每个一维数组里长度为5。

//创建二维数组对象
int[][] arr = new int[5][5];

③静态创建一个二维数组,包含3个一维数组,每个一维数组里长度为3,并且直接赋值。

int arr[][]={{1,2,3},{3,4,5},{5,6,7}};

3.2)二维数组的赋值

​​​​​
①直接赋值

//创建二维数组容器
int[][] arr = new int[3][3];//直接赋值到
arr[1][0] = 20;
arr[1][1] = 20;//打印输出
System.out.println("arr[0][0]=" + arr[0][0]);	
System.out.println("arr[1][0]=" + arr[1][0]);	
System.out.println("arr[1][1]=" + arr[1][1]);	打印结果如图:未赋值的默认为0

​​​​​​​​​​在这里插入图片描述

②用for循环赋值

//创建二维数组对象
int[][] arr = new int[5][];//外层循环控制行数 定位二维数组的每个元素空间	for(int i = 0;i <= arr.length - 1;i++){//创建一维数组容器,关联当前二维数组的元素位置arr[i] = new int[i + 1];//内层循环控制当前行的列数 --> 为当前一维数组的每个元素进行赋值操作for(int j = 0;j <= arr[i].length - 1;j++){//赋值操作arr[i][j] = i + 1;//打印展示操作System.out.print(arr[i][j]);}//单独换行System.out.println();}

打印结果如图:
​​​​​​在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CLIPSeg如果报“目标计算机积极拒绝,无法连接。”怎么办?

CLIPSeg这个插件在使用的时候&#xff0c;偶尔会遇到以下报错&#xff1a; Error occurred when executing CLIPSeg: (MaxRetryError("HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /CIDAS/clipseg-rd64-refined/resolve/main/toke…

14届蓝桥杯 C/C++ B组 T5 接龙排序 (最长上升子序列DP+优化)

不难发现这是一个LIS问题&#xff0c;但是如果直接套用LIS的模版&#xff0c;在数据范围到达 1 e 5 1e5 1e5 的情况下&#xff0c;就只能够得到一半的分数&#xff0c;所以我们需要对其进行优化。 首先给出暴力的代码&#xff1a; #include<iostream> using namespace…

知识管理系统|基于Springboot和vue的知识管理系统设计与实现(源码+数据库+文档)

知识管理 目录 基于Springboot和vue的知识管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 5.2.2 文章信息 5.3.1 论坛交流 2、后台 用户管理 5.1.2 文章分类 5.2.1 资料分类 四、数据库设计 五、核心代码 六、论文参考 七、最…

2024年上半年WSK-PETS5报名及考试时间公布

4月1日&#xff0c;中国教育考试网发布了2024年上半年全国外语水平考试WSK&#xff08;PETS5&#xff09;的报名及考试通知&#xff0c;为方便关注者&#xff0c;知识人网小编特做全文转载。 国家公派留学人员全国外语水平考试&#xff08;WSK-PETS5&#xff09;成绩作为国家留…

Python零基础从小白打怪升级中~~~~~~~流程控制语句

第三节&#xff1a;Python的流程控制语法 一、Python条件语句的语法 if 条件1:条件1成立执⾏的代码一条件1成⽴执⾏的代码二...... elif 条件2&#xff1a;条件2成立执⾏的代码三条件2成立执⾏的代码四...... ...... else:以上条件都不成⽴&#xff0c;执行的代码五以上条件都…

axios是什么?axios使用axios和ajax

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 环境。它是由 GitHub 用户 mzabriskie 开发的&#xff0c;并且得到了广泛的社区支持。Axios 的设计目标是提供一种简洁、易用且功能强大的 HTTP 请求方式&#xff0c;以替代传统的 Ajax&#xff08;A…

【深入理解Java IO流0x03】解读Java最基本的IO流之字节流InputStream、OutputStream

在开始前&#xff0c;我们再来回顾一下这张图&#xff1a; 本篇博客主要为大家讲解字节流。 我们都知道&#xff0c;一切文件&#xff08;文本、视频、图片&#xff09;的数据都是以二进制的形式存储的&#xff0c;传输时也是。所以&#xff0c;字节流可以传输任意类型的文件数…

2.动态库与静态库

1.库的制作 库文件是计算机上的一类文件&#xff0c;可以将库文件看做是一种代码仓库。它提供给使用者一些可以直接拿来用的变量&#xff0c;函数或类。库是一种特殊的程序&#xff0c;但是库是不能单独运行的。 库文件有两种&#xff1a;静态库和动态库 静态库: GCC进行链接…

Jackson 各种注解使用示例

参考资料 Jackson使い方メモ 目录 一. JsonIgnore二. JsonIgnoreProperties三. JsonProperty3.1 作用于entity属性上&#xff0c;指定json对象属性名3.2 作用于entity方法上&#xff0c;指定json对象属性名 四. JsonFormat4.1 日期格式化4.2 数字格式化4.3 枚举类返回code 五.…

Open CASCADE学习|平面上的PCurve

曲面上的曲线PCurve&#xff0c;字面上理解即为参数曲线(Parametric Curve)。在几何建模中&#xff0c;PCurve通常被描述为附加在参数曲面之间公共边上的数据结构。从更具体的定义来看&#xff0c;当给定一个曲面方程&#xff0c;并且其参数u和v是另一个参数t的函数时&#xff…

Redis数据库的简介、部署及常用命令

关系数据库与非关系型数据 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。sQL语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c…

HarmonyOS NEXT应用开发之Environment:设备环境查询

开发者如果需要应用程序运行的设备的环境参数&#xff0c;以此来作出不同的场景判断&#xff0c;比如多语言&#xff0c;暗黑模式等&#xff0c;需要用到Environment设备环境查询。 Environment是ArkUI框架在应用程序启动时创建的单例对象。它为AppStorage提供了一系列描述应用…

wireshark抓包新手使用教程

Wireshark是非常流行的网络封包分析软件&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括&#xff1a; 1、Wireshark软件下载和安装以及Wireshark主界面介绍。 2、WireShark简单抓包示例。通过该例子学…

20万就想买智能驾驶汽车?!我给你找到了三款车

文 | AUTO芯球 作者 | 雷歌 我都不敢相信&#xff0c;智能驾驶的车型已经这么便宜啦&#xff01; 一年多前&#xff0c;我一个前同事大冤种&#xff0c;还另掏3万多买某个造车新势力品牌的智驾包呢。 现在动不动就全给你标配了。 近的就说刚刚发布的小米SU7标准版&#xf…

962: 括号匹配问题

【学习版】 【C语言】 【C】 #include<iostream>class MyStack { public:struct Node {char val;Node* prev;Node* next;Node(char x) :val(x), prev(NULL),next(NULL) {};};MyStack() {base new Node(0);top base;}bool empty() {return top base;}void push(int …

Mysql底层原理五:如何设计、用好索引

1.索引的代价 空间上的代价 时间上的代价 每次对表中的数据进⾏增、删、改操作时&#xff0c;都需要去修改各个B树索引。⽽且我们讲过&#xff0c;B树每层节点都是按照索引列的值从⼩到⼤的顺序排序⽽组成了双 向链表。不论是叶⼦节点中的记录&#xff0c;还是内节点中的记录&a…

vue 中使 date/time/datetime 类型的 input 支持 placeholder 方法

一般在开发时&#xff0c;设置了 date/time/datetime 等类型的 input 属性 placeholder 提示文本时&#xff0c; 发现实际展示中却并不生效&#xff0c;如图&#xff1a; 处理后效果如图&#xff1a; 处理逻辑 判断表单项未设置值时&#xff0c;则设置其伪类样式&#xff0c;文…

深度学习基础之一:机器学习

文章目录 深度学习基本概念(Basic concepts of deep learning)机器学习典型任务机器学习分类 模型训练的基本概念基本名词机器学习任务流程模型训练详细流程正、反向传播学习率Batch size激活函数激活函数 sigmoid 损失函数MSE & M交叉熵损失 优化器优化器 — 梯度下降优化…

IVS模型解释

核心思路 【Implied volatility surface predictability: The case of commodity markets】 半参数化模型&#xff1a;利用各种参数(或者因子)对隐含波动率进行降维&#xff08;静态参数化因子模型&#xff09;&#xff0c;对参数化因子的时间序列进行间接的建模 基于非对称…

未来的技术发展趋势

文章目录 前言一、人工智能技术势必聚焦安全能力二、单云环境逐渐让位于多云环境三、后量子密码或将在美大范围普及总结前言 2023 年,与网络空间安全息息相关的人工智能等技术发展迅猛,新的信息安全时代已然拉开大幕。在目睹了 ChatGPT、“星链”和量子通信等技术展现出的巨…