当前位置: 首页 > news >正文

Javase学习文档------数组

Java 数组是 Java 编程中非常基础和重要的一个知识点。

以下是 Java 数组的主要学习内容:

数组的几个特点
数组在声明时必须指定长度,且长度不可变:数组的长度在声明时就需要确定,一旦确定就不能修改。因此,在使用数组时需要仔细考虑数组大小,以免出现数组越界等问题。
数组可以包含任意类型的数据:Java 数组可以包含任意类型的数据,包括基本数据类型(如 int、double 等)和引用类型(如 String、Object 等)。
数组元素按照顺序存储:数组中的所有元素按照声明时的顺序依次存储,可以通过下标来访问和修改数组元素。
数组是一种对象类型:在 Java 中,数组也是一种对象类型,也就是说数组变量存储的是一个对象的引用。
数组长度可以通过 length 属性获取:数组具有一个 length 属性,可以用于获取数组的长度,例如:int[] nums = {1, 2, 3}; System.out.println(nums.length); // 输出 3

需要注意的是,数组是一种静态数据结构,其大小在声明时就已经确定,因此无法动态地添加或删除元素。同时,数组也存在许多操作上的限制,如无法直接进行插入或删除操作,而只能通过复制元素的方式实现。因此,在设计数据结构时需要根据实际需求选择合适的数据结构。

定义数组:声明数组时需要指定数组长度和元素类型,可以使用数组初始化器或者循环对数组进行初始化。

int[] num1 = new int[length];
int[] num2 = new int[]{123};
String[] names = {"Alice", "Bob", "Charlie"};

访问数组元素:通过下标访问数组元素,下标从0开始计数。例如:a[0] 表示数组 a 的第一个元素。

   String[] names = {"Alice", "Bob", "Charlie"};System.out.println(names[0]);System.out.println(names[1]);System.out.println(names[2]);}

数组遍历:循环结构(如:for、while)或 foreach 循环来遍历数组中的所有元素。

//for循环
String[] names = {"Alice", "Bob", "Charlie"};for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}
//增强for循环 foreachString[] names = {"Alice", "Bob", "Charlie"};for (String name : names) {System.out.println(name);}

数组的排序:Java 提供了 Arrays.sort() 方法,可以对数组进行排序操作。

 int[] nums = new int[]{3,2,1};Arrays.sort(nums);for (int i : nums) {System.out.println(i);}}

数组的查找:可以使用循环遍历或二分查找等算法实现。

 public static int search(int[] nums, int target) {// 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算if (target < nums[0] || target > nums[nums.length - 1]) {return -1;}int leftNode = 0;//左边下标int rightNode = nums.length - 1;//右边下标while (leftNode <= rightNode) {  //或者用 while(leftNode < rightNode)因为left == right的时候,在[leftNode, rightNode)是无效的空间,所以使用 <int midNdoe = ((rightNode - leftNode) >> 1) + leftNode;// 等同于(left + right)/2   -->防止溢出if (target == nums[midNdoe]) {return midNdoe;} else if (target > nums[midNdoe]) {leftNode = midNdoe + 1;//把左边下标移动 缩小空间} else {rightNode = midNdoe - 1; //把左边下标移动 缩小空间  若用另一种方法则 rightNode = midNode [target 在左区间,在[left, middle)中]}}return -1;}

相关文章:

Javase学习文档------数组

Java 数组是 Java 编程中非常基础和重要的一个知识点。 以下是 Java 数组的主要学习内容&#xff1a; 数组的几个特点 数组在声明时必须指定长度&#xff0c;且长度不可变&#xff1a;数组的长度在声明时就需要确定&#xff0c;一旦确定就不能修改。因此&#xff0c;在使用数组…...

百度高德地图JS-API学习手记:地图基本设置与省市区数据加载

无论是百度还是高德地图开发&#xff0c;还是高德地图开发。官方的给的案例启示很多&#xff0c;copy再修改下&#xff0c;就完成了 概述-地图 JS API | 高德地图API 地图 JS API | 百度地图API SDK 这个大致看一下&#xff0c;我想。有点GIS基础都能完成地图开发。 个人认…...

c语言—指针详解***内存地址***指针字节数***注意事项

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

VMware虚拟机之WindowsXP系统超详细下载安装与使用教程

文章目录前言一、WindowsXP虚拟机系统下载二、WindowsXP虚拟机系统安装三、WindowsXP虚拟机系统使用总结前言 本博客的主要内容为使用VMware虚拟机下载安装与使用WindowsXP系统&#xff0c;WindowsXP系统虽然早已过时&#xff0c;但是仍对我们的学习有着很大的帮助&#xff0c;…...

【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

积极心态,助力人生成功

无论生活中遇到多少困难和挫折&#xff0c;只要我们保持积极心态、努力拼搏&#xff0c;就有望最终实现自己的梦想和目标。...

ADRC线性跟踪微分器(ST+SCL语言)

ADRC自抗扰相关算法源代码和公式请参看下面文章链接: ADRC/Matlab一步步实现跟踪微分器TD(附完整PLC测试代码链接)_ladrc线性跟踪微分器差分方程_RXXW_Dor的博客-CSDN博客关于Adrc的理论分析不是本篇博客的重点,主要也是能力所限,相关理论大家可以看韩京清教授的论文,专栏…...

Linux C/C++ 崩溃诊断大师:解锁软件问题定位与修复的秘密武器

让崩溃成为历史&#xff1a;详解有效诊断与解决技巧引言崩溃信息的类型设置信号处理函数&#xff08;Setting up signal handlers&#xff09;信号来源和上下文信息使用 siginfo_t 结构体获取信号来源信息使用 ucontext 结构体获取上下文信息将崩溃信息写入日志标准的信号处理函…...

ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。

让我们来看看ChatGPT不能通过Oracle OCP的考试&#xff1f; 文章目录引言测试过程总结和分析关于博主&#xff0c;姚远&#xff1a;Oracle ACE&#xff08;Oracle和MySQL数据库方向&#xff09;。Oracle MAA 大师。华为云MVP。《MySQL 8.0运维与优化》的作者。拥有 Oracle 10g和…...

《扬帆优配》二季度投资策略出炉 机构调仓换股露踪迹

随着多家上市公司公告发布&#xff0c;其发表的股东数据使得基金的最新持仓浮出水面。与此同时&#xff0c;组织也在密集调研中寻觅出资时机。站在二季度的起点&#xff0c;基金公司二季度出资策略渐次发表。多家基金公司以为&#xff0c;宏观经济将延续修正态势&#xff0c;仍…...

【SpringMVC】2—传统方式实现增删改查

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…...

图像阈值化

图像阈值化 图像阈值化简介 ⚫ 图像阈值化是图像处理的重要基础部分, 应用很广泛, 可以根据灰度差异来分割图像不同部分 ⚫ 阈值化处理的图像一般为单通道图像(灰度图) ⚫ 阈值化参数的设置可以使用滑动条来debug ⚫ 阈值化处理易光照影响, 处理时应注意 ⚫ 本节主要介绍…...

1.5 极限运算法则

思维导图&#xff1a; 我的理解&#xff1a; 如果一个数列{a_n}是一个无穷小&#xff0c;那么它的极限为0&#xff0c;即lim(n→∞)a_n0。同样地&#xff0c;如果另一个数列{b_n}也是一个无穷小&#xff0c;那么它的极限为0&#xff0c;即lim(n→∞)b_n0。 当我们考虑这两个无…...

首批因AI失业的人出现-某游戏公司裁掉半数原画师

如今各种AI爆火&#xff0c;不可避免的的会与某些功能撞车职业发生冲突&#xff0c;每一次生产力的变革&#xff0c;在带来技术进步与更高效率的同时&#xff0c;也都无可避免的会带来一波失业浪潮&#xff0c;当下的人工智能浪潮自然也不例外。 现在&#xff0c;第一批因为AI…...

字符串转换整数(atoi)

请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格 检查下一个字符&#xff08;假设还未到字符…...

Servlet练习

练习准备 编写Student和StudentDao package beans;public class Student{private String num;private String name;public Student(){}public String getNum() {return num;}public String getName() {return name;}public void setNum(String num) {this.num num;}public v…...

美国高速公路信号灯控制项目的大致逻辑和步骤 智慧公路设计

美国高速公路信号灯控制项目的大致逻辑和步骤&#xff1a; 美国那边先提供一个关于具体做什么需求、那边的设备&#xff08;信号灯&#xff09;有什么参数&#xff0c;什么接口&#xff0c;分别是什么属性等等的详细设计文档&#xff0c;开发人员拿到这个文档以后把它看懂&…...

数字电源专用IC,国产C2000, QX320F280049

一、特性参数 1、独立双核&#xff0c;32位CPU&#xff0c;单核主频400MHz 2、IEEE 754 单精度浮点单元 &#xff08;FPU&#xff09; 3、三角函数单元 &#xff08;TMU&#xff09; 4、1MB 的 FLASH &#xff08;ECC保护&#xff09; 5、1MB 的 SRAM &#xff08;ECC保护&…...

第六章 ARM汇编语言程序设计【嵌入式系统】

第六章 ARM汇编语言程序设计【嵌入式系统】前言推荐第六章 ARM汇编语言程序设计6.1 概述6.2 ARM汇编语言指示符6.3 ARM编程举例6.4 ARM过程调用6.5 典型举例6.6 内嵌汇编C与汇编相互调用最后前言 以下内容源自《【嵌入式系统】》 仅供学习交流使用 推荐 无 第六章 ARM汇编语…...

详细讲讲Java线程的状态

TERMINATED状态 是什么状态&#xff1f; 在Java线程的生命周期中&#xff0c;TERMINATED状态是线程的最终状态&#xff0c;表示线程已经执行完毕并已经退出。当一个线程完成了它的工作&#xff0c;或者因为异常而提前结束时&#xff0c;它会进入TERMINATED状态。此时线程不再执…...

企业月结快递管理教程

回答这个问题的之前&#xff0c;我们先来看看什么是企业月结快递管理...... 经济的发展&#xff0c;技术的进步&#xff0c;电商行业的加持之下&#xff0c;这几年快递行业的发展有目共睹。不仅是我们的生活离不开快递&#xff0c;很多企业的运作多多少少也离不开“快递”二字…...

cm cdp告警 Swap Memory Usage Suppress...

原因&#xff1a;服务器没有关swap&#xff0c;服务使用了swap 在cdp集群中&#xff0c;一般要关掉swap&#xff0c;如果没有关。可以使用 下面命令设置程序尽可能不使用swap&#xff0c;使用swap会影响性能 修改后&#xff0c;重启服务就不会使用swap了 sysctl -w vm.swappi…...

3.8——友元

类的主要特点之一是信息隐藏和封装&#xff0c;即类的私有成员和保护成员只能在定义的范围内使用&#xff0c;也就是说私有成员和保护成员只能通过类的成员函数来访问。但是&#xff0c;有时候我们在类外也需要访问私有成员数据或保护成员数据怎么办。这时我们就要通过友元函数…...

C++ OOP Feature Conclusion (更新中)

目录 1.类与对象 1.1 基本概念&#xff08;继承、封装、抽象、多态&#xff09; 1.2类的声明 1.3成员函数&#xff08;对象所占空间取决于数据成员&#xff0c;和成员函数无关&#xff09; 1.4数据成员&#xff08;不能在类中初始化&#xff09; 1.5构造与析构函数&#xff08…...

【HTTP】Cookie、Session、Token以及Cookie优化

Cookie、Session、TokenCookie优化Cookie、Session、Token 在开始介绍Cookie安全之前&#xff0c;我们先来了解一下实现授权的方式。 在登录功能中&#xff0c;为了记住登录成功后的信息&#xff0c;在客户端&#xff0c;我们通常会使用Cookie来记录&#xff0c;但是&#xf…...

npm之报错:Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘

1.报错 363 error [Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/tldr’ -> ‘/usr/local/lib/node_modules/.tldr-8nq4AGAt’] { 363 error errno: -13, 363 error code: ‘EACCES’, 363 error syscall: ‘rename’, 363 error path: ‘/usr/…...

「SQL面试题库」 No_30 超过5名学生的课

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…...

自定义maven插件,在项目中命令启动springboot并加载当前项目资源

背景 最近在制定团队内公用的基础框架&#xff0c;基于单应用多module的架构思路&#xff0c;使用maven管理项目依赖&#xff0c;在项目中定义了一个springboot模块&#xff0c;该模块依赖具体的业务实现模块&#xff0c;启动后通过扫描路径下的类加载服务&#xff0c;业务开发…...

Linux系统【Centos7】更新内核更新软件详细教程

更新内核&#xff1a; 1. 打开终端&#xff0c;输入命令 sudo yum update&#xff0c;等待更新完成。 2. 重启系统&#xff0c;输入命令 sudo reboot。 3. 在 GRUB 引导界面&#xff0c;选择最新的内核版本&#xff0c;按下回车键进入系统。 4. 在终端中输入命令 uname -r&…...

C++ 中new/delete与malloc/free详解

文章目录前言一、new/delete1. 序言2. 使用方法2.1. new 和 delete 基本语法2.2. new 和 delete 的底层实现原理3. 底层原理3.1. operator new 和 operator delete3.2. new 和 delete 的底层实现原理4. 注意事项5. 总结二、malloc/free1. 序言2. 使用方法2.1. malloc 和 free 基…...