Java数组的学习(基础二)

2023-11-01

目录

友情提醒

第一章:数组的概念介绍

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

打印结果如图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java数组的学习(基础二) 的相关文章

  • 2023国赛数学建模思路 - 案例:随机森林

    文章目录 1 什么是随机森林 2 随机深林构造流程 3 随机森林的优缺点 3 1 优点 3 2 缺点 4 随机深林算法实现 建模资料 0 赛题思路 赛题出来以后第一时间在CSDN分享 https blog csdn net dc sinor
  • 隐私计算S2赛季-谁是真正的王者

    去年至今 隐私计算大约经历了如火如荼的一年 身为局中人 看穿居中事 道尽居中话 为的无非是让更多的来了解这个比较细分的AI领域 秋天本是硕果累累的丰收季 隐私计算这个行业算是金秋吗 一喜一悲 一喜为百花齐放 我所知道在布 挂 局 钩 隐私计
  • VL53L0X调试总结

    最近调VL53L0X花了不少时间 特总结下 https www st com content st com en search html q vl53l t products page 1 VL53L0X测距2m VL53L1X测距4m 支
  • networkx 中文学习手册

    文章目录 创建图表 节点 边 检查图的元素 从图中删除元素 使用图构造函数 什么用作节点和边 访问边和邻居 向图 节点和边添加属性 图形属性 节点属性 边缘属性 多图 图生成器和图操作 1 应用经典的图操作 例如 2 使用对经典小图之一的调
  • Harmony OS WiFi编程——连接热点、创建热点

    本节主要介绍如何在HiSpark WiFi IoT套件上使用Hamony OS的WiFi相关编程接口 相关知识点 WiFi的工作模式 AP模式 热点模式 提供无线接入服务 允许其它无线设备接入 提供数据访问 一般的无线路由 网桥工作在该模式
  • JavaNote 1.7final、finally、访问权限

    一 final 1 final的变量的值不能被改变 2 final的方法不能被重写 3 final的类不能被继承 二 finally finally 语句块 必须执行 通常在finally语句块中执行资源清除工作 如关闭打开的文件 删除临时
  • 基于Sklearn实现LDA算法

    文章目录 一 LDA算法 二 sklearn实现LDA 三 结果如图 四 总结 五 参考 一 LDA算法 1 线性判别分析 Linear Discriminant Analysis LDA 方法常被用于数据预处理中的降维 dimension

随机推荐

  • ArcMap布局视图的图例设置,如显示符号、标注、描述等

    转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 81305762 如上图所示 为了达到以上的图例显示效果 鄙人上下求索 废了不
  • vue动态生成二维码,扫码登录

    首先找到对应的的三个接口 1 二维码获取key接口 接口说明 调用此接口可生成一个key 2 二维码生成接口 接口说明 调用此接口传入上一个接口生成的key可生成二维码图片的base64和二维码信息 可使用base64展示图片 或者使用二维
  • mysql自动启动设置用Systemctl start mysqld启动

    1 如果你是用yum安装的话就不需要进行设置了 用systemctl restart mysqld启动报如下错 2 查看系统服务有没有mysqld chkconfig list 3 MySQL启动关闭添加到 etc init d mysql
  • 解决Chrome浏览器中部分字体显示模糊的问题

    如果在Chrome浏览器中查看某些网页时 发现大部分字体显示清晰 但是另外部分字体显示模糊看不清的话 有可能是浏览器字体设置的问题 解决方式如下 1 点击Chrome浏览器右上角的 按钮 点击 设置 菜单 或直接在地址栏中输入 chrome
  • 解决java.net.BindException: Address already in use(Bind failed)端口占用问题

    sudo lsof i 8080 删掉图中两个进程 kill 9 2960 其中 9是九
  • 分别采用prim算法与kruskal算法构造最小生成树(第一次作业)

    分别采用prim算法与kruskal算法构造最小生成树 1 问题 举一个实例 画出采用Prim算法构造最小生成树的过程 并按实验报告模板编写算法 举一个实例 画出采用Kruskal算法构造最小生成树的过程 并按实验报告模板编写算法 有n个村
  • axios get请求特殊字符编码问题

    这几天在写一个项目 然后就遇到了请求的编码问题 然后在度娘上搜到了答案 请求拦截器配置处理 this axiosInstance interceptors request use config AxiosRequestConfig gt c
  • go换源国内并根据mod文件下载依赖

    go env w GO111MODULE on go env w GOPROXY https goproxy cn direct 根据mod文件下载依赖 此命令需要在go mod同级目录下执行 go mod tidy
  • 做EEG频谱分析,看这一篇文章就够了!

    所谓频谱分析 又称为功率谱分析或者功率谱密度 Power Spectral Density PSD 分析 实际就是通过一定方法求解信号的功率power随着频率变化曲线 笔者在这里对目前常用的频谱分析方法做一个总结 并重点介绍目前EEG分析中
  • Outlook Express 无法连接服务器,错误号:0x800CCC0E

    发送邮件的时候报错 无法发送邮件 显示无法连接到服务器 邮箱为公司外部邮箱 协议 SMTP 端口 25 套接字错误 10060 错误号 0x800CCC0E 含义是 无法连接服务器 请确定一下是否可以正常连接SMTP服务器 一般解决方法是
  • HTTP断点续传原理 状态码206 Partial Content

    HTTP断点续传 断点续传就是从文件上次中断的地方开始重新下载或上传 当下载或上传文件的时候 如果没有实现断点续传功能 那么每次出现异常或者用户主动的暂停 都会去重头下载 这样很浪费时间 所以断点续传的功能就应运而生了 要实现断点续传的功能
  • DVWA全级别通关教程

    首先选择难度 我们从low开始 如上图所示进行修改 目录 SQL手工注入 过程 low Medium high Impossible SQL 盲注 过程 SQL 工具注入 工具安装过程 过程 low Medium High 暴力破解 过程
  • 基于SSM的校园学生管理系统的设计与实现

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 校园学生管理系
  • pc 电商平台----search模块

    目录 vuex中的模块化 Object assign 用法 watch监听 数组方法splice与split splice split 方法 数组去重 自定义分页器 vuex中的模块化 vuex使用三部曲 写请求 页面dispatch派发a
  • java TreeSet 和 TreeMap 源码解读

    目录 一 前言 二 TreeSet详解 1 TreeSet简介 2 TreeSet的底层实现 0 准备工作 1 TreeSet构造器 2 匿名内部类实现接口的多态 3 TreeMap构造器 4 add方法 5 put方法和put方法 6 继
  • js日期时间篇

    创建 var date new Date 参数 参数 可选 1 不填写默认为当前时间 2 year month day hours minutes seconds milliseconds 格式 new Date 年 月 日 时 分 秒 毫
  • java assert关键字

    1 仅仅用于调试 发布不生效 2 两种用法 assert 布尔表达式 assert 布尔表达式 自定义输出信息 3 需要再idea中配置vm options ea boolean isSafe false assert isSafe isS
  • TensorFlow安装并在Pycharm搭建环境

    Anaconda安装 anaconda官方下载地址 https www anaconda com products individualhttps www anaconda com products individual 注意 此处要勾选第
  • Node.js——npm管理工具介绍

    概述 Npm是NodeJS包管理工具 在最新版本中Nodejs集成了npm 可以通过输入 npm v 来测试是否成功安装 如果你安装的是旧版本的 npm 可以通过 npm 命令来升级 命令如下 sudo npm install npm g
  • Java数组的学习(基础二)

    目录 友情提醒 第一章 数组的概念介绍 1 数组的概念 2 数组的初始化 数组的创建 数组的定义 第二章 数组的使用 数组添加元素的方法 数组的赋值 数组的遍历 数组之选择排序的升序 数组之冒泡排序的升序 数组的最小值 数组的反转 数组中常