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

我在VScode学Java(Java一维数组)

我的个人博客主页:如果'\'真能转义1️⃣说1️⃣的博客主页
关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java)


我在VScode学Java(Java一维数组)

Java 一维数组

声明数组:先声明,后使用

动态分配内存

创建数组:分配数据存储的物理空间是在堆上

处理数组内容

For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

越界访问数组 --->警告

二分查找:

左闭右闭区间的:

左闭右开区间的:

排序:

询问cursor

自带方法:

一些术语:

根据学习和书籍上的内容总结一下:


Java 一维数组

Java数组下标是从零开始的,Java数组下标访问运算符[ ].
Java数组是引用数据类型,长度属性为 length。
(1)Java和其他高级语言都提供了一种使用一个统一的数组名和不同的下标来唯一确定数组 (array)中的元素的数据结构。
(2)可以用一个标识符封装存储一个元素个数固定且元素类型相同的基本类型数据序列或者对象序列。(是一个简单的线性序列,因此访问速度很快。)

   
    根据数组的维度,可以分为一维数组、二维数组、多维数组等。
    数组元素的默认值:

  1.         对于基本数据类型 0,0.0,‘\u000’
  2.         对于引用元素数据类型string,object等为 null。
  3.         对于Boolean类型,为false

    数组的长度:数组名.length。

    数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 array.length-1。

int[] intArray = new int[5];
System.out.println(intArray[0]); // 输出0
double[] doubleArray = new double[5];
System.out.println(doubleArray[0]); // 输出0.0
char[] charArray = new char[5];
System.out.println(charArray[0]); // 输出空字符
boolean[] boolArray = new boolean[5];
System.out.println(boolArray[0]); // 输出false
String[] strArray = new String[5];
System.out.println(strArray[0]); // 输出null


声明数组:先声明,后使用

在Java语言中,采用 ( 数据类型  [ ] 数组名 ) 的形式,而( 数据类型  数组名 [ ] )是保留了C/C++的形式。如今越来越多的语言的风格都采用了第一种的形式了。

//elementType[ ] arrayRefVar;(元素类型[ ] 数组引用变量;)
double [] douarray;
int inarr[];

动态分配内存

Java还提供了其他的方法,例如ArrayListLinkedList。这些类允许您在运行时添加和删除元素,而无需手动管理内存分配。

//java.util.Scanner类从用户读取输入。Scanner类允许您从标准输入读取用户输入。
import java.util.ArrayList;public class MyClass {public static void main(String[] args) {ArrayList<Integer> intList = new ArrayList<Integer>();intList.add(1);intList.add(2);intList.add(3);System.out.println(intList); // 输出 [1, 2, 3]}
}

创建数组:分配数据存储的物理空间是在堆上

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 ~ array.length-1。

 Java语言是通过使用new操作符来创建数组

arrayRefVar = new dataType[arraySize];
 // 定义数组double[] myList = new double[10];  //size=10   //或者不直接给定int n = sc.nextInt();int[] intArray = new int[n];

处理数组内容

一般使用基本的三大循环或者 For-Each 循环。

For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

int[] intArray = {1, 2, 3, 4, 5};// 使用for-each循环输出数组元素
for (int i : intArray) {System.out.println(i);
}

不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。

越界访问数组 --->警告

警告 越界访问数组是经常会出现的程序设计错误,它会抛出一个运行错误ArrayIndexOut0fBoundsException。为了避免错误的发生,在使用时应确保所使用的下标不超过arrayRefVar.length-1。

主要原因:是在循环中该使用<的地方误用<=时会犯的错误。

二分查找:

左闭右闭区间的:

public class BinarySearch {public static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;}

左闭右开区间的:

public class BinarySearch {public static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length;while (left < right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid;}}return -1;}

排序:

询问cursor

自带方法:

(1)Arrays.sort():该方法使用快速排序算法对数组进行排序。时间复杂度为O(nlogn)。

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

(2)Collections.sort():该方法使用归并排序算法对列表进行排序。时间复杂度为O(nlogn)

List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5));
Collections.sort(list);
System.out.println(list);

一些术语:

anonymous array (匿名数组)

array initializer(数组初始化语法)

binary search (二分查找)

index (下标)

indexed variable(下标变量)

insertion sort (插入排序)

linear search(线性查找)

selection sort (选择排序)

根据学习和书籍上的内容总结一下:

  • 声明数组变量并不会给数组分配任何空间。数组变量不是基本数据类型变量。数组变量包含的是对数组的引用。当创建一个数组时,若它的元素是基本数据类型的数值,那么该数组的初始值的默认值和改数据类型是一致的。
  • 只有创建数组后才能给数组元素赋值。可以使用new操作符创建数组,语法如下:newelementType[array.Size] (数据类型[数组大小])。
  • 数组中的每个元素都是使用语法arravRefVarlindex1 (数组引用变量[下标])表示的。下标必须是一个整数或一个整数表达式。
  • 创建数组之后,它的大小就不能改变,使用array.length就可以得到数组的大小。由于数组的下标总是从0开始,所以,最后一个下标总是array.length-1。如果试图引用数组界外的元素,就会发生越界错误。千万不要用下标1访问数组的第一个元素,其实际上对于该元素的下标应该是0。这个错误称为下标过1错误(index off-by-one error)。
  • Java有一个称为数组初始化语法 (array initializer)的表达式,它将数组的声明、创建和初始化合并为一条语句,其语法为:
    元素类型[] 数组引用变量={value0,value1,.·,valuek}
  • 将数组参数传递给方法时,实际上传递的是数组的引用,更准确地说,被调用的方法可以修改调用者的原始数组的元素。

相关文章:

我在VScode学Java(Java一维数组)

我的个人博客主页&#xff1a;如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客&#xff1a;(我在Vscode学Java) 我在VScode学Java(Java一维数组&#xff09; Java 一维数组 声明数组&#xff1a;先声明&#xff0c;后使用 动态分配内…...

不能使用chatGPT?这3个平替甚至比chatGPT更强

不能使用chatGPT&#xff1f;这3个平替甚至比chatGPT更强 chatGPT&#xff0c;一款由OpenAI开发的新型AI聊天机器人&#xff0c;正在势如破竹地改变着许多人的工作和生活方式。作为一款基于大语言模型的聊天机器人&#xff0c;chatGPT能够理解自然语言并进行人机对话。与传统的…...

基于SLM调制器,MIT研发高效率全息显示方案

此前&#xff0c;青亭网曾报道过NVIDIA、三星、剑桥大学等对空间光调制器&#xff08;SLM&#xff09;全息方案的探索。空间光调制器可调节光波的空间分布&#xff0c;在电驱动信号控制下&#xff0c;可改变光在空间中传播的振幅、强度、相位、偏振态等特性&#xff0c;从而形成…...

【Docker】镜像与docker数据卷

文章目录 一、镜像1、镜像2、镜像原理之联合文件系统3、镜像原理之分层4、commit镜像 二、数据卷1、数据卷2、-v使用数据卷3、实战&#xff1a;MySQL 同步数据4、docker volume相关指令5、匿名和具名挂载6、数据卷之Dockerfile7、数据卷容器 一、镜像 1、镜像 镜像是一种轻量级…...

机器学习小结之KNN算法

文章目录 前言一、概念1.1 机器学习基本概念1.2 k 值1.3 距离度量1.4 加权方式 二、实现2.1 手写实现2.2 调库 Scikit-learn2.3 测试自己的数据 三、总结3.1 分析3.2 KNN 优缺点 参考 前言 ​ KNN (K-Nearest Neighbor)算法是一种最简单&#xff0c;也是一个很实用的机器学习的…...

函函函函函函函函函函函数——two

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C知识系统分享》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c;…...

SpringCloud学习笔记06

九十五、Cloud Alibaba简介 0、why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 1、是什么 官网&#xff1a;spring-cloud-alibaba/README-zh.md at 2.2.x alibaba/spring-cloud-alibaba GitHub 2、能干嘛 3、去哪下 spring-cloud-alibaba/README-…...

学系统集成项目管理工程师(中项)系列14_采购管理

1. 概念和术语 1.1. 采购是从项目团队外部获得产品、服务或成果的完整的购买过程 1.2. 三大类 1.2.1. 工程 1.2.2. 产品/货物 1.2.3. 服务 2. 主要过程 2.1. 编制采购管理计划 2.2. 实施采购 2.3. 控制采购 2.4. 结束采购 3. 合同 3.1. 包括买方和卖方之间的法律文…...

PMP课堂模拟题目及解析(第3期)

21. 一家农业设备制造商因一个缺陷部件而召回数千个产品。这个问题导致许多客户不满&#xff0c;公司花费 500 万美元来修理和更换零件。哪一种成本预算类型可以防止这个问题&#xff1f; A. 非一致性成本 B. 一致性成本 C. 矩阵图 D. 多标准决策分析 22. 一位团队成员…...

华为OD机试 - 微服务的集成测试( Python)

题目描述 现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗一些时间。 给你一个 n x n 的二维矩阵useTime,其中 useTime[i][i]=10 表示服务i自身启动加载需要消耗10s useTime[i][j] = 1 表示服务i启动依赖服务j启动完…...

SLAM面试笔记(4) — 企业面试汇总

目录 1 大疆 一面&#xff08;50min&#xff09; 二面&#xff08;30min&#xff09; 三面&#xff08;30min&#xff09; 2 华为 一面&#xff08;30min&#xff09; 二面&#xff08;30min&#xff09; 三面&#xff08;30min&#xff09; 3 海康 一面&#xff08;…...

五大新兴产业中,有三个中国出口全球占比居首-机器视觉工程师正处于需求旺盛阶段

​五大新兴产业包含生物保健和电动汽车,新一代半导体、新一代显示器、二次电池。 在五大新兴产业中的三大领域——新一代半导体、新一代显示器、二次电池,中国对外出口在全球所占比重最高。 电动汽车,汽车行业一直对机器视觉工程师有着强烈的需求,无论比亚迪,特斯拉等等…...

网络安全监管

网络安全监管 网络安全法律体系建设计算机犯罪、信息安全等基本概念我国立法体系及网络安全法我国的立法体系网络安全法出台背景基本概念安全法主要结构第一章 总则第二章 网络安全支持与促进第三章 网络运行安全第四章 网络信息安全第五章 监测预警与应急处置第六章 法律责任 …...

【code review】代码评审的18个军规(建议收藏)

文章目录 背景1. 添加必要的注释2.日志打印规范3. 命名规范4.参数校验5. 判空处理6. 异常处理规范7. 模块化&#xff0c;可扩展性8. 并发控制规范9. 单元测试规范10. 代码格式规范11. 接口兼容性12. 程序逻辑是否清晰,主次是否够分明13. 安全规范14. 事务控制规范15. 幂等处理规…...

PyQt5桌面应用开发(5):对话框

本文目录 PyQt5桌面应用系列对话框QDialogQDialog的基本用法按钮组 QMessageBox综合展示的例子结论 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&#xff1a;事件循环 PyQt5桌面应用开发&a…...

整洁的代码

文章目录 为什么要写整洁的代码什么是整洁的代码可读性运行效率扩展性 怎么写整洁的代码注释&命名函数&类代码结构 为什么要写整洁的代码 为什么要写整洁的代码,回答这个问题之前,也许应该想想写糟糕的代码的原因 是想快点完成吗?还是要赶时间吗?有可能.或许你觉得…...

Redis集群常用命令及说明

一、集群的特点 1、集群架构特点 &#xff08;1&#xff09;所有的redis节点彼此互联&#xff08;PING-PONG机制&#xff09;&#xff0c;内部使用二进制协议优化传输速度和带宽&#xff1b; &#xff08;2&#xff09;节点的fail是通过集群中超过半数的节点检测失效时才生效…...

使用edge浏览器,白嫖ChatGPT的保姆级教程来了

前言 嗨&#xff0c;大家好&#xff0c;我是希留&#xff0c;一个被迫致力于全栈开发的老菜鸟。 人工智能大浪潮已经来临&#xff0c;对于ChatGPT&#xff0c;我觉得任何一个玩互联网的人&#xff0c;都应该重视起来&#xff0c;用起来。但是国内使用需要解决科学上网、注册、…...

新人入职,都用这三招,让你安全度过试用期

刚入职工作 3招让你安全度过试用期 给新手小伙伴们分享几招 让你们能在试用期的时候平滑去度过 那么第一第一点就是 能自己解决的千万不要去问 千万不要去问 因为往往我们在去面试的时候 我们往往都是备足了很多的资料 备足了很多的面试题库 然后呢 你在给人家面试的时候总有一…...

小程序上车,车载小程序的信息安全是否可靠?

随着智能交通和车联网技术的快速发展&#xff0c;越来越多的车载应用程序&#xff08;APP&#xff09;进入人们的视野&#xff0c;从而推动了车载业务生态的不断发展。然而&#xff0c;车载应用程序的安全问题也引起了人们的广泛关注。为此&#xff0c;小程序容器技术作为一种有…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...