JavaSE核心基础-一维数组-笔记

1.数组概念
相同类型数据的集合,它在内存空间的存储是连续的。数组其实也是一个容器,用来存储固定个数相同类型的数据,数组中存储的数据叫做元素。

2.数组定义
    方式1:
    数据类型[] 数组名 = new 数据类型[数组长度];
    数据类型 数组名[] = new 数据类型[数组长度]
    int[] arr = new int[10];
    int arr[] = new int[10];
数组定义格式详解: 
1)数组存储的数据类型:创建的数组容器可以存储什么数据类型。
2) [] : 表示数组。
3) 数组名:为定义的数组起个名称,满足标识符规范,可以使用名字操作数组。 
4) new:关键字,创建数组使用的关键字。
5) 数据类型: 创建的数组容器可以存储什么数据类型。
6)[数组长度]:数组的长度,表示数组容器中可以存储多少个元素。 
【注意!!!】 数组有定长特性,长度一旦指定,不可更改。

    方式2:
    数据类型[] 数组名 = new 数据类型[]{值1,值2...};
    int[] arr = new int[]{1,2,3,4,5};
数组定义格式详解: 
1)在定义数组的时候,直接将数组元素的值传入
2)采用这种方式定义数组,那么一定不要定义长度,数组的长度是由具体元素的个数决定
        
     方式3:
     数据类型[] 数组名 = {元素1,元素2,元素3...};
     int[] arr = {1,2,3,4,5}; 
数组定义格式详解: 
1)这种方式第一数组,直接传入要操作数组元素的值
2)这种定义数组的方式使用的比较少

3.数组索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。

4.访问数组的格式
格式:
         数组名[索引/下标]   【索引/下标:元素在数组中的位置,位置是从0开始,比如获取第5个元素,arr[4]】

5.数组的长度属性
每个数组都具有长度,并且在定义数组之后就是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度。
格式:
         数组名.length 【属性length的执行结果是数组的长度,int类型结果。由此可得,数组的最大索引值为 数组名.length-1。】

6.索引访问数组中的元素
Ⅰ.在数组中可以通过索引赋值,也可以通过索引得到数组元素的值。
①.为数组元素赋值格式:
数组名[索引] = 值;
②.获得数组元素:
变量 = 数组名[索引];

Ⅱ.数组创建之后,内存会分配默认值
byte 、short、 int 、long类型的默认值是:0
float、 double类型的默认值是0.0
String类型的默认值是:null
char类型的默认值是:'\u0000',即 0
boolean类型的默认值是:false

小结:
①.定义数组的常用方式:数据类型[] 数组名=new 数据类型[长度]。
②.数组的长度为:数组名.length。
③.数组是通过索引名称赋值,也是通过索引访问。

7.内存的概述
1)内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 
2)Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。 

小结:
①.数组是引用数据类型。
②.引用数据类型的值存在堆空间中,由地址指向值。

8.数组的常见操作
1)数组越界异常 : ArrayIndexOutOfBoundsException 数组越界异常
2)数组空指针异常 : NullPointerException 空指针异常
3)数组的遍历
4)数组获取最大元素值元素
①.方法一:
定义变量,保存数组0索引上的元素 
遍历数组,获取出数组中的每个元素 
将遍历到的元素和保存数组0索引上值的变量进行比较 
如果数组元素的值大于了变量的值,变量记录住新的值
数组循环遍历结束,变量保存的就是数组中的最大值 

②.方法二:
导包:java.util.Arrays; 
调用Arrays中的sort()方法,对数组进行升序排序
数组中的最后一个元素即为最大值
5)数组的反转
分析:
实现反转,就需要将数组最远端元素位置交换 
定义两个变量,保存数组的最小索引和最大索引 
两个索引上的元素交换位置 
最小索引++,最大索引--,再次交换位置 
最小索引超过了最大索引,数组反转操作结束 
6)冒泡排序
冒泡排序原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:
①.依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
②.第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
③.第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
④.依次类推,每一趟比较次数-1;
【代码实现】
int[] arr = {2,3,4,6,1,8};
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]){
            int a = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = a;
        }
    }
}

for(int i=0;i<arr.length;i++){
    System.out.println(arr[i])
}

小结:
①.在操作数组的时候要避免出现数组下标越界异常和空指针异常。
②.使用for循环遍历数组。
③.求数组的最大值的前提是参与比较的值必须是数组中的元素。
④.冒泡排序的规则:外层循环n-1,内层循环n-1-i

9.数组作为方法的参数和返回值
1)数组作为方法的参数传递的是数组内存的地址
2)数组作为方法的返回值,返回的是数组的内存地址

小结:
①.方法的参数为基本类型时,传递的是数据值。
②.方法的参数为引用类型时,传递的是地址值。

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

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

相关文章

Duplicate object key json(520)

亲爱的码友&#xff0c;当你看到这个错误 请查看一下你的json文件内容的关键词是不是重复了 举个栗子&#x1f330; 往下翻翻&#xff1a; 删一个就行&#xff01;&#xff01;&#xff01; 被自己傻哭了吧&#x1f923;&#x1f923;&#x1f923;

js实现九九乘法表

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">// 输出乘法口诀表// document.write () 空格 " " 换行…

Flowable 生成流程图

/*** 生成流程图** param processId 任务ID*/ RequestMapping("/diagram/{processId}") public void genProcessDiagram(HttpServletResponse response,PathVariable("processId") String processId) {InputStream inputStream flowTaskService.diagram(p…

HubSpot整合小红书,MessageBox助力多系统融合

在当今数字化潮流中&#xff0c;HubSpot与小红书的强大联盟成为了数字化市场的亮点。今天运营坛将深入解析它们的合作策略&#xff0c;聚焦于MessageBox在整合中的关键角色&#xff0c;以及它在推动HubSpot和小红书整合方面的关键作用。 HubSpot与小红书&#xff1a;数字化市场…

用C语言验证“三门定理”

#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <time.h>// 一个源自博弈论的数学游戏问题&#xff1a; // 参赛者会看见三扇门&#xff0c; // 其中一扇门的里面有一辆汽车&#xff0c; // 选中里面是汽车的那扇门&#xff0…

Shiro实战详解(4)--JWT生成token以及解析token

JWT生成token以及解析token 06 SpringbootShiroJwt前后端分离鉴权1、前后端分离会话问题【1】问题追踪【2】解决方案 2、JWT概述1.Header2.payload3.Signature JWT生成Token及解析 06 SpringbootShiroJwt前后端分离鉴权 1、前后端分离会话问题 【1】问题追踪 前面我们实现分…

【Linux驱动】休眠与唤醒 | POLL机制 | 异步通知 | 阻塞与非阻塞 | 软件定时器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3d3;休眠与唤醒&#x1f3f8;内核函数&#x1f3f8;驱动框架及编程 &#x1f3d3;…

代码随想录算法训练DAY25|回溯2

算法训练DAY25|回溯2 216.组合总和III 力扣题目链接 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n …

本地部署轻量级web开发框架Flask并实现无公网ip远程访问开发界面

文章目录 1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 本篇文章主要讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采用Python编程语…

Linux操作系统——理解软硬链接

1.引言 通过我们前面理解文件系统的基础上&#xff0c;我们来理解软硬链接&#xff0c;在我们学习文件的时候我们会见到各种链接文件&#xff0c;其中链接文件分为两种&#xff0c;一种叫软连接&#xff0c;一种叫硬链接。 下面我们新建一个log文件&#xff0c;要对log这个文…

【SpringCloud Alibaba】 介绍及微服务模块搭建

文章目录 SpringCloud Alibaba 介绍主要功能组件 微服务环境搭建案例准备技术选型模块设计微服务调用 创建父工程创建基础模块1、创建 shop-common 模块2、创建实体类 创建用户微服务1、创建pom.xml2、编写主类3、创建配置文件 创建商品微服务1、创建一个名为 shop-product 的模…

理解PCIE设备透传

PCIE设备透传解决的是使虚拟机直接访问PCIE设备的技术&#xff0c;通常情况下&#xff0c;为了使虚拟机能够访问Hypervisor上的资源&#xff0c;QEMU&#xff0c;KVMTOOL等虚拟机工具提供了"trap and emulate"&#xff0c; Virtio半虚拟化等机制实现。但是这些实现都…

leetcode 151反转字符串如何原地去除多余空格

题目&#xff1a;https://leetcode.cn/problems/reverse-words-in-a-string/description/ 完整题解:https://leetcode.cn/problems/reverse-words-in-a-string/solutions/2611893/chu-li-kong-ge-ku-han-shu-reversefan-zhu-bioo 思路来自代码随想录&#xff0c;对其中的除去多…

websocket实现聊天室(vue2 + node)

通过websocket实现简单的聊天室功能 需求分析如图&#xff1a; 搭建的项目结构如图&#xff1a; 前端步骤&#xff1a; vue create socket_demo (创建项目)views下面建立Home , Login组件路由里面配置路径Home组件内部开启websocket连接 前端相关组件代码&#xff1a; Login…

【操作系统】实验二 Proc文件系统

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Docker基础使用

Docker基础使用 1.查看容器挂载文件夹一定要放开权限&#xff0c;否则后面启动nexus时会无法启动1.查询远程镜像重启docker服务容器自启动关闭容器自启动查看docker容器是否挂载容器挂载解释保存和加载本地镜像创建mysql容器容器转换为镜像创建dockerfile容器相互通讯查看容器的…

使用Rancher管理Kubernetes集群

部署前规划 整个部署包括2个部分&#xff0c;一是管理集群部署&#xff0c;二是k8s集群部署。管理集群功能主要提供web界面方式管理k8s集群。正常情况&#xff0c;管理集群3个节点即可&#xff0c;k8s集群至少3个。本文以3节点管理集群&#xff0c;3节点k8s集群为例 说明部署过…

vivado JTAG链、连接、IP关联规则

JTAG链 这列出了定义板上可用的不同JTAG链。每个链都列在下面<jtag_chain>以及链的名称&#xff0c;以及定义名称和链中组件的位置&#xff1a; <jtag_chains> <jtag_chain name"chain1"> <position name"0" component"part0…

ELK 分离式日志(1)

目录 一.ELK组件 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 可以添加的其它组件&#xff1a; ELK 的工作原理&#xff1a; 二.部署ELK 节点都设置Java环境: 每台都可以部署 Elasticsearch 软件&#xff1a; 修改elasticsearch主配置文件&…

计算机视觉工程师就业前景如何?

计算机视觉作为一门快速发展的技术领域&#xff0c;其就业前景非常广阔。以下是对计算机视觉就业前景的分析&#xff1a; 市场规模&#xff1a;计算机视觉行业的市场规模正在持续扩大。根据行业分析报告&#xff0c;预计全球计算机视觉市场规模将在2025年达到530亿美元&#xf…