Java数组的学习(基础)

news2024/11/26 5:53:12

目录

第一章:数组的概念介绍

1.数组的概念

2.数组的初始化/数组的创建/数组的定义

第二章:数组的使用

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

数组的遍历

数组之选择排序的升序

数组之冒泡排序的升序

数组的最小值

数组的反转

数组中常见的异常

第三章:二维数组

1.二维数组定义

2.二维数组的赋值

第一章:数组的概念介绍

1.数组的概念

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

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

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

,我们称为:长度length。

④数组有索引的概念,数组中的元素从0开始编号,这个编号我们称为:下标index,因为是从0开始编号所以索引最大值为:length-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};

第二章:数组的使用

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

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

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

数组名[下标]=需要添加的元素;

arr [0] = 1 ;
arr [1] = 2 ;
arr [2] = 3 ;
arr [3] = 4 ;
arr [4] = 5 ;

数组的遍历

①当我们需要查看数组里面的内容。最基础的是使用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);

数组之选择排序的升序

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

//定义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;
				}
			}
			
		}

数组的最小值

//定义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];
			}
		}

数组的反转

①第一种反转

//定义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++;
		}
	}

数组中常见的异常

①空指针异常

//运行时异常:	空指针异常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]);

第三章:二维数组

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

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}};

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.coloradmin.cn/o/475649.html

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

相关文章

Python程序员想要转行,可以从这几个方面着手

最近有很多朋友问我一个问题&#xff0c;不论是我们做程序员还是做产品经理或者其他行业&#xff0c;到了30岁或35岁之后&#xff0c;都会面临各种各样的问题&#xff0c;比如达到职业天花板。有没有一种方法能够解决这种问题呢&#xff1f;我想分享一下我的观点和身边的案例。…

《Netty》从零开始学netty源码(四十七)之PooledByteBuf的方法

setBytes() 从channel中读取数据并写到PooledByteBuf中&#xff0c;分配缓存的过程与getBytes一样&#xff0c;只是duplicate为false。 capacity() 动态更新容量&#xff0c;根据新传入的容量值更改length。 如果新容量值与旧值相同则无需扩容如果为非池化内存则根据新容量值…

Zabbix部署详解

文章目录 Zabbix安装部署一、zabbix-server端部署二、zabbix-agent端部署 Zabbix安装部署 环境准备 VMware Workstation Pro 15.0 版本 系统 Centos7 内存 4G 处理器 2G 硬盘 50G 网络适配器 NAT 两台服务器&#xff0c;一台做zabbix-server、一台做zabbix-agent 关闭防火墙、…

【华为OD机试真题】信号发射和接收(javaC++python)100%通过率 超详细代码注释

信号发射和接收 知识点数组栈 单调栈时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 有一个二维的天线矩阵,每根天线可以向其他天线发射信号也能接收其他天线的信号,为了简化起见,我们约定每根天线只能向东和向南发射信号,换言之,每根天线只能接收东向或南向发…

unity-VRTK-simulator开发学习日记2(抛物线 导包|使用|调用方法)

导包 使用抛物线 1.层级目录下添加抛物线曲线 2.将跟踪控制器 给到抛物线的“跟随资源” &#xff08;选择哪只手射出射线&#xff09; 3.激活按键 找到模拟手柄按键 找到simulator的交互的几个按键&#xff08;ButtonOne为例&#xff09; value&#xff0c;默认值为false&a…

Doris(20):Doris的函数—数学函数

1 查看函数名 show builtin functions in test_db; 2 abs(double a) 功能: 返回参数的绝对值 返回类型:double类型 使用说明:使用该函数需要确保函数的返回值是整数。 3 acos(double a) 功能: 返回参数的反余弦值 返回类型:double类型 MySQL 中反余弦函数 ACOS(…

【五一创作】使用Scala二次开发Spark3.3.0实现对MySQL的upsert操作

使用Scala二次开发Spark实现对MySQL的upsert操作 背景 在我们的数仓升级项目中&#xff0c;遇到了这样的场景&#xff1a;古人开发的任务是使用DataStage运算后&#xff0c;按照主键【或者多个字段拼接的唯一键】来做insert then update&#xff0c;顾名思义&#xff0c;也就…

能上网的ChatGPT,会带来什么改变

最近关注AI的人&#xff0c;应该会注意到这条新闻。 ChatGPT官方推出新模式—Default&#xff08;GPT-3.5&#xff09;with browsing 这个是之前ChatGPT没有的功能&#xff0c;ChatGPT以前的训练数据是在2021年左右&#xff0c;并不知道最近的新闻。 现在ChatGPT 能够联网以…

AIGC提词生成图片(人物照片)练习笔记

文生图, 图生图 等 AIGC 创作大火, 也来体验一下吧. 本文记录了环境搭建过程与使用心得. 如果动手能力弱或只想省心, 有 环境要求 列出来我的环境吧: CPU, AMD Ryzen 7 5800X 8-Core ProcessorRAM, 32GGPU, NVIDIA GeForce RTX 2070 SUPER (8G)OS, Windows 11 专业版开发环境…

Qt MSVC开发

环境搭建 安装Virsual Studio&#xff0c;版本可以选择最新版本&#xff0c;我安装的时vs2022&#xff0c;安装时需要勾选 C 桌面开发 安装QT, 下载地址&#xff1a;https://download.qt.io/official_releases/online_installers/&#xff0c;安装时需要选择MSVC 2019 64-bit。…

Packet Tracer - 配置 RIPv2

Packet Tracer - 配置 RIPv2 目标 第 1 部分&#xff1a;配置 RIPv2 第 2 部分&#xff1a;验证配置 拓扑图 背景信息 尽管在现代网络中极少使用 RIP&#xff0c;但是作为了解基本网络路由的基础则十分有用。 在本活动中&#xff0c;您将使用适当的网络语句和被动接口配置…

【LeetCood206】反转链表

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 答案1&#xff1a; 新建链表&#xff0c;遍历原链表&#xff0c;一个一个头插到新建的链表.直到结点为null public ListNode reverseList(ListNode head) {ListNode secondListHead n…

【细读Spring Boot源码】监听器合集-持续更新中

前言 监听器汇总 归属监听器名称作用cloudBootstrapApplicationListenercloudLoggingSystemShutdownListenercloudRestartListenercloudLoggingSystemShutdownListenerspringbootEnvironmentPostProcessorApplicationListener用于触发在spring.factories文件中注册的Environm…

osg操控器之动画路径操控器osgGA::AnimationPathManipulator分析

目录 1. 前言 2. 示例代码 3. 动画路径操控器源码分析 3.1. 构造函数 3.2. home函数 3.3. handle函数 3.3.1 帧事件处理 3.3.2. 按键事件处理 4. 主要接口说明 1. 前言 osg官方提供了很多操控器&#xff0c;在源码目录下的src\osgGA目录下&#xff0c;cpp文件名含有Ma…

初识AUTOSAR

目录 应用层 Runnable Port 运行时环境 基础软件层 总结 AUTOSAR&#xff0c;全称为Automotive Open System Architecture&#xff0c;即汽车开放系统架构。它最初于2003年由当时全球各家顶级汽车制造商&#xff08;奔驰、宝马、大众等&#xff09;、零部件供应商&#x…

【Unity入门】21.预制体

【Unity入门】预制体 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;预制体制作 &#xff08;1&#xff09;什么是预制体 这一章节的博客&#xff0c;我们将会学习一个预制体的概念。什么是…

【C语言进阶】-- 重点字符串函数内存函数及其模拟实现(strlen,strcmp,strcat...memcpy,memmove)

目录 1、strlen 1.1 strlen的模拟实现 2、strcpy 2.1 strcpy的模拟实现 3、strcat 3.1 strcat的模拟实现 4、strcmp 4.1 strcmp的模拟实现 5、strstr 5.1 strstr的模拟实现 6、memcpy 6.1 memcpy的模拟实现 7、memmove 7.1 memmove的模拟实现 前言 C语言中对字符…

Ant Design Vue,a-table组件加序号

<a-table:columns"columns":pagination"pagination":data-source"dataSource":defaultExpandAllRows"true"change"tableChange":rowKey"(record, index) > index 1"> columns是表格列的配置&#xff0c…

【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

【2023五一杯数学建模】 B题 快递需求分析问题 1 题目 请依据以下提供的附件数据和背景内容&#xff0c;建立数学模型&#xff0c;完成接下来的问题&#xff1a;问题背景是&#xff0c;网络购物作为一种重要的消费方式&#xff0c;带动着快递服务需求飞速增长&#xff0c;为我…

25特别放送:我的Gopher成长之路

很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。 首先,写这篇文章的目的并不是为了吹嘘Go语言有多厉害,也不是鼓励大家都来学习Go语言,仅是为了记录和分享。当然如果是兴趣使然,那么欢…