Java数组详解

Java数组详解

    • 📚 Java数组详解:一篇文章搞懂Java中的数组知识
      • 摘要
      • 引言
      • 1. 数组的定义与创建📦
        • 1.1 数组的定义
        • 1.2 数组的创建及初始化
          • 数组不进行初始化时的默认值
      • 2. 数组的遍历🔍
        • 2.1 使用for循环
        • 2.2 使用增强for循环
        • 2.3 使用Arrays.toString方法
      • 3. 数组中常用的API🔧
        • 3.1 binarySearch
        • 3.2 copyOf
        • 3.3 copyOfRange
        • 3.4 equals
        • 3.5 fill
        • 3.6 sort
        • 3.7 toString
      • 4. 二维数组📐
        • 4.1 二维数组的定义
        • 4.2 二维数组的创建及初始化
        • 4.3 二维数组的遍历
          • 使用for循环
          • 使用增强for循环
          • 使用Arrays.deepToString方法
      • 🤔 QA环节
      • 表格总结
      • 总结
      • 未来展望🔮
      • 参考资料

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
《java 专栏》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨


📚 Java数组详解:一篇文章搞懂Java中的数组知识

如果你想全面了解Java中有关数组的知识点,那么这篇文章就是你需要的全部。让我们一起深入探讨数组的定义、创建、遍历以及常用API吧!

摘要

大家好,我是默语,一个热爱分享技术的博主。在这篇博客中,我们将全面讲解Java中的数组,包括数组的定义、创建、初始化、遍历方法以及常用的数组API。此外,我们还将介绍二维数组的使用。无论你是Java初学者还是有经验的开发者,这篇文章都将为你提供有价值的参考和实用的代码示例。✨

引言

数组是Java编程中最基本和最常用的数据结构之一。理解数组的定义、创建和操作对于编写高效的Java程序至关重要。本文将从基础入手,逐步深入介绍Java数组的各个方面,帮助你全面掌握这一重要知识点。

1. 数组的定义与创建📦

1.1 数组的定义

在Java中,数组是一种用于存储相同类型元素的容器。数组可以是基本数据类型的数组,也可以是对象的数组。

// 定义一个整数数组
int[] numbers;// 定义一个字符串数组
String[] names;
1.2 数组的创建及初始化

数组的创建和初始化可以在一行中完成,也可以分开进行。

// 创建并初始化数组
int[] numbers = {1, 2, 3, 4, 5};
String[] names = {"Alice", "Bob", "Charlie"};// 分开创建和初始化
int[] scores = new int[5]; // 创建一个包含5个元素的数组
scores[0] = 90; // 初始化第一个元素
scores[1] = 85; // 初始化第二个元素
数组不进行初始化时的默认值

如果数组在创建时未初始化,其元素将被赋予默认值。基本数据类型的默认值如下:

  • 整型(int、long、short、byte):0
  • 浮点型(float、double):0.0
  • 字符型(char):‘\u0000’
  • 布尔型(boolean):false
  • 引用类型:null

2. 数组的遍历🔍

遍历数组是操作数组的常见需求。Java提供了多种方式来遍历数组。

2.1 使用for循环
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {System.out.println("Element at index " + i + ": " + numbers[i]);
}
2.2 使用增强for循环

增强for循环(也称为for-each循环)提供了一种简洁的方式来遍历数组。

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {System.out.println("Number: " + num);
}
2.3 使用Arrays.toString方法

Arrays.toString方法可以方便地将数组转换为字符串形式,以便于打印。

import java.util.Arrays;int[] numbers = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(numbers));

3. 数组中常用的API🔧

Java提供了许多实用的数组API,这些API大部分位于java.util.Arrays类中。

3.1 binarySearch

binarySearch用于在已排序的数组中查找元素,返回元素的索引。

import java.util.Arrays;int[] numbers = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(numbers, 3);
System.out.println("Index of 3: " + index);
3.2 copyOf

copyOf用于复制数组并返回一个新的数组。

import java.util.Arrays;int[] numbers = {1, 2, 3, 4, 5};
int[] newNumbers = Arrays.copyOf(numbers, numbers.length);
System.out.println(Arrays.toString(newNumbers));
3.3 copyOfRange

copyOfRange用于复制数组的指定范围。

import java.util.Arrays;int[] numbers = {1, 2, 3, 4, 5};
int[] newNumbers = Arrays.copyOfRange(numbers, 1, 4);
System.out.println(Arrays.toString(newNumbers));
3.4 equals

equals用于比较两个数组是否相等。

import java.util.Arrays;int[] numbers1 = {1, 2, 3, 4, 5};
int[] numbers2 = {1, 2, 3, 4, 5};
boolean isEqual = Arrays.equals(numbers1, numbers2);
System.out.println("Arrays are equal: " + isEqual);
3.5 fill

fill用于用指定值填充数组。

import java.util.Arrays;int[] numbers = new int[5];
Arrays.fill(numbers, 10);
System.out.println(Arrays.toString(numbers));
3.6 sort

sort用于对数组进行排序。

import java.util.Arrays;int[] numbers = {5, 3, 1, 4, 2};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
3.7 toString

toString用于将数组转换为字符串形式。

import java.util.Arrays;int[] numbers = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(numbers));

4. 二维数组📐

二维数组是数组的数组,常用于表示矩阵或表格数据。

4.1 二维数组的定义
int[][] matrix;
4.2 二维数组的创建及初始化
int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};
4.3 二维数组的遍历
使用for循环
for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {System.out.print(matrix[i][j] + " ");}System.out.println();
}
使用增强for循环
for (int[] row : matrix) {for (int num : row) {System.out.print(num + " ");}System.out.println();
}
使用Arrays.deepToString方法

deepToString方法用于打印多维数组。

import java.util.Arrays;System.out.println(Arrays.deepToString(matrix));

🤔 QA环节

问:Java数组的默认值是什么?

答:Java数组的默认值取决于数组的类型。整型为0,浮点型为0.0,字符型为’\u0000’,布尔型为false,引用类型为null。

问:如何对二维数组进行初始化?

答:可以在创建二维数组时直接进行初始化,例如:

int[][] matrix = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};

表格总结

内容示例代码备注
数组定义int[] numbers;定义一个整数数组
数组创建与初始化int[] numbers = {1, 2, 3};创建并初始化数组
for循环遍历for (int i = 0; i < arr.length; i++) {}传统for循环遍历数组
增强for循环遍历for (int num : arr) {}简洁的for-each循环遍历
Arrays.toStringArrays.toString(arr)将数组转换为字符串
二维数组定义int[][] matrix;定义一个二维数组
二维数组初始化int[][] matrix = {{1, 2}, {3, 4}};创建并初始化二维数组
二维数组遍历for (int[] row : matrix) {}使用增强for循环遍历二维数组

总结

本文详细介绍了Java中的数组,包括数组的定义、创建、初始化、遍历方法以及常用的数组API。同时,我们还探讨了二维数组的使用。掌握这些知识可以帮助你在Java编程中高效地处理数据,提高代码的可读性和维护性。

未来展望🔮

未来,我们可以期待更多强大的Java特性和工具来简化数组操作和数据处理。持续学习和实践新技术,将

使我们在开发过程中更加得心应手。

参考资料

  1. Java官方文档
  2. Java教程 - 菜鸟教程
  3. Java Arrays - W3Schools

在这里插入图片描述


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

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

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

相关文章

斐讯N1刷OpenWRT并安装内网穿透服务实现远程管理旁路由

文章目录 前言1. 制作刷机固件U盘1.1 制作刷机U盘需要准备以下软件&#xff1a;1.2 制作步骤 2. N1盒子降级与U盘启动2.1 N1盒子降级2.2 N1盒子U盘启动设置2.3 使用U盘刷入OpenWRT2.4 OpenWRT后台IP地址修改2.5 设置旁路由&无线上网 3. 安装cpolar内网穿透3.1 下载公钥3.2 …

wordpress主题给网站增加一个版权声明区块代码分享

在数字化时代&#xff0c;网络上的信息传播变得越来越便捷&#xff0c;给人们生活和工作带来了极大的便利。然而&#xff0c;在这个过程中也产生了很多版权问题。为了更好地保护自己的版权&#xff0c;许多网站开始在其网页上添加版权声明。本文将探讨在网站上添加版权声明的重…

scala完整笔记-5万字一周入门到精通系列(一)

scala完整笔记-5万字一周入门到精通写在开篇 1.scala学习前一定要具备了解一些java基本知识&#xff0c;无需精通&#xff1b;如果从未接触java&#xff0c;最好熟悉一门编程语言&#xff0c;否则相对还是学习起来相对吃力且很难学懂 2.本篇主要以代码示例为主&#xff0c;很多…

亲测使用frp获得访问者真实ip

怎么访问都只有127.0.0.1这个内网ip,获取不到访问者的真实ip 1.打开frp的配置文件(一般是frpc.toml&#xff0c;无需设置frps.toml) 在每一个tcp协议中添加 transport.proxyProtocolVersion "v2" 实例&#xff1a; # frpc.toml [[proxies]] name "web" …

1小时从0开始搭建自己的直播平台(详细步骤)

本文讲述了如何从0开始&#xff0c;利用腾讯云的平台&#xff0c;快速搭建一个直播平台的过程。 文章目录 效果图详细步骤准备工作第一步&#xff1a;添加域名并检验cname配置1.先填加一个推流域名2. 点击完下一步&#xff0c;得到一个cname地址3. 将cname地址&#xff0c;配置…

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

目录 0 专栏介绍1 从鸟群迁徙说起2 粒子群算法基本概念3 粒子群算法流程4 粒子群算法ROS实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&#xff1b;局部规…

类和对象【六】友元和内部类

文章目录 友元友元的作用友元的缺点友元函数语法&#xff1a;特点&#xff1a; 友元类语法&#xff1a;特点&#xff1a; 内部类概念特点 友元 友元的作用 友元提供了一种打破封装的方式&#xff0c;有时提供了便利。 友元的主要作用就是打破封装 即可以让一个类的友元函数…

每日一题24:数据操作之第N高的薪水

一、每日一题 表: Employee ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- 在 SQL 中&#xff0c;id 是该表的主键。 该表的每一行都包含有关员工工资的信息。查询 Employee 表中第 …

C#--SVG矢量图画法示例

1.代码示例 <Viewbox Grid.Column"1" Grid.ColumnSpan"1" Grid.RowSpan"1" ><Path Name"ValveShape" Stroke"Black" Data"M 50,0 L 150,200 L 50,200 L 150,0 Z" Width"200" Height"…

5、xss-labs之level6

一、level6-----大小写绕过 1、测试分析 测试了之前用过的payload&#xff0c;发现都不行&#xff0c;并且level4使用的Java伪协议也不行&#xff0c;可以得出<>、script、onclick都被过滤 2、构造payload 因为href被过滤&#xff0c;可以试一下大写HREF 初试payload…

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能

前端Vue自定义顶部搜索框&#xff1a;实现热门搜索与历史搜索功能 摘要&#xff1a; 随着前端开发复杂性的增加&#xff0c;组件化开发成为了提高效率和降低维护成本的有效手段。本文介绍了一个基于Vue的前端自定义顶部搜索框组件&#xff0c;该组件不仅具备基本的搜索功能&am…

【wiki知识库】02.wiki知识库SpringBoot后端的准备

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;今日目标 二、&#x1f4c2;打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…

shell编程之循环语句与函数

一、for循环语句 在实际工作中&#xff0c;经常会遇到某项任务需要多次执行的情况&#xff0c;而每次执行时仅仅是处理的对象不一样&#xff0c;其他命令相同。例如&#xff0c;根据通讯录中的姓名列表创建系统账号&#xff0c;根据服务器清单检查各主机的存活状态&#xff0c;…

一.ffmpeg 将内存中的H264跟PCM 数据流合成多媒体文件

在有一些嵌入式平台中&#xff0c;H264数据流一般来自芯片内部的硬编码器&#xff0c; AAC音频数据则是通过采集PCM进行软编码&#xff0c;但是如何对它实时进行封装多媒体文件 &#xff0c;参考ffmpeg example&#xff0c;花了一些时间终于实现了该功能。 流程图如下&#xf…

06.深入学习Java 线程

1 线程的状态/生命周期 Java 的 Thread 类对线程状态进行了枚举&#xff1a; public class Thread implements Runnable {public enum State {NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED;} } 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用…

panic: concurrent write to websocket connection【golang、websocket】

文章目录 异常信息原由代码错误点 解决办法 异常信息 panic: concurrent write to websocket connection原由 golang 编写 websocket go版本&#xff1a;1.19 使用了第三方框架&#xff1a; https://github.com/gorilla/websocket/tree/main 代码 server.go // Copyright …

Linux - crond任务调度、at定时任务

1 crontab 进行-定时任务的设置 1&#xff09;概述&#xff1a; 任务调度&#xff1a;是指系统在某个时间执行的特定的命令或程序。 任务调度分类&#xff1a; 系统工作&#xff1a;有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作&#xff1a;个别用户可能希…

Vue3实战笔记(38)—粒子特效终章

文章目录 前言一、怎样使用官方提供的特效二、海葵特效总结 前言 官方还有很多漂亮的特效&#xff0c;但是vue3只有一个demo&#xff0c;例如我前面实现的两个页面就耗费了一些时间&#xff0c;今天记录一下tsparticles官方内置的几个特效的使用方法&#xff0c;一般这几个就足…

SSM志愿服务管理小程序-计算机毕业设计源码97923

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;志愿服务管理小程序被用户普遍使用&#xff0c;方便用户能…

Vue3:动态路由+子页面(新增、详情页)动态路由配置(代码全注释)

文章目录 实现思路调用后端接口获取用户权限获取页面权限动态绑定到路由对象中动态添加子页面路由 实现思路 emm&#xff0c;项目中使用动态路由实现根据后端返回的用户详情信息&#xff0c;动态将该用户能够访问的页面信息&#xff0c;动态生成并且绑定到路由对象中。但是后…