对Java中二维数组的深层认识

首先,在JAVA中,二维数组是一种数组的数组。它可以看作是一个矩阵,通常是由于表示二维数据节后,如表格和网格。

1.声明和初始化二维数组

声明

int[][] arr;

初始化

int[][] arr=new int[3][4];

或者用花括号嵌套

int[][] arr={{1,2,3},{4,5,6}};

2.访问二维数组的元素

要访问或修改二维数组中的元素,可以使用数组下标:

int value=arr[1][2];

3.动态初始化二维数组

int[][] arr=new int[3][];
arr[0]=new int[2];//第一行有2列
arr[1]=new int[4]; //第二行有4列
arr[2]=new int[3];//第三行有3列

4.内存布局

在Java中,数组是对象,二维数组是包含数组引用的数组。每个子数组都是有独立的对象,存储在堆内存中。这意味着各子数组可以有不同的长度,并且改变一个子数组不会影响到其他子数组。

上面已经说了数组是对象,并且它是一个特殊的一维数组,那么arr在一维数组中就是数组对象的引用,又因为二维数组是一个特殊的一维数组,那么拆分一下,是不是每一行arr[i]都是一维数组。则arr[0]就是第一行对象的引用,arr[1]就是第二行对象的引用。如下图所示:
在这里插入图片描述

public class demo5 {public static void main(String[] args) {int[][] arr={{1,2,3},{4,5,6}};System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}

运行结果:

这里是引用

从上述运行结果我们不难看出,arr[i]就是一个对象的引用(即一个一维数组)

5.遍历二维数组

fori循环遍历

 public static void main(String[] args) {int[][] arr={{1,2,3},{4,5,6}};for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]);}System.out.println();}}

运行结果:
在这里插入图片描述
foreach循环遍历

for (int[] tmpArray:arr) {for (int x:tmpArray) {System.out.print(x);}System.out.println();}

运行结果:
在这里插入图片描述
deeptoString打印所有元素

 String ret= Arrays.deepToString(arr);System.out.println(ret);

运行结果:
在这里插入图片描述

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

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

相关文章

Python一些小操作

矢量图 from matplotlib_inline import backend_inline backend_inline.set_matplotlib_formats(svg)matplotlib中文问题 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]["SimHei"] #设置字体 plt.rcParams["axes.unicode_minus…

【张悦】短视频、直播自然流三频共振起号实操课(价值2980元)

介绍 01.账号雷区&#xff08;账号限流&#xff09;剪辑版 02.解除限流&#xff08;废号挽救&#xff09; 03.基础推流机制和热门指标 04.账号粉丝数据分析 05.标签规则“铁粉机制 06.看账号标签打标签了 07.视频看标签打标签 08.拔升流量池之“破播三板斧” 09.破播利器“神评…

【LeetCode:312. 戳气球+ 动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

ChromaDB初探

探索ChromaDB 在当今数据驱动的世界中&#xff0c;随着人工智能和机器学习的广泛应用&#xff0c;如何高效地存储、检索和操作大量向量数据成为了一个关键问题。ChromaDB作为一种强大的向量数据库&#xff0c;正在为解决这一问题提供全新的解决方案。在这篇博客中&#xff0c;…

【机器学习基础】Python编程10:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言&#xff0c;它在机器学习领域中的重要性主要体现在以下几个方面&#xff1a; 简洁易学&#xff1a;Python语法简洁清晰&#xff0c;易于学习&#xff0c;使得初学者能够快速上手机器学习项目。 丰富的库支持&#xff1a;Python拥有大量的机…

代码随想录——修建二叉搜素树(Leetcode669)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

八爪鱼现金流-019-个人对接支付,个人网站支付解决方案

背景&#xff1a; 随着用户量不断增加&#xff0c;服务器成本越来越大。想着实现会员制回点服务器成本。 业务场景分析&#xff1a; 用户在站点上付款 -----> 我监听到付款金额 -----> 给用户开通会员 调研&#xff1a; 支付宝和微信官方支付接口&#xff1a;基本都需…

鸿蒙认证学什么?

鸿蒙是华为鸿蒙系统。华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分布式操作系统。 华为鸿蒙系统是一款全新的面向全场景的分布式操作系统&#xff0c…

hustoj二开

目录 1、路径问题2、开发问题&#xff08;1&#xff09;、mysql&#xff08;2&#xff09;、php 啊啊啊啊&#xff01;&#xff01;&#xff01;难崩&#xff1a; 路径问题搞了好长时间才明白了该项目的路径如何设置的 >_< ,&#xff0c;本文就路径问题&#xff0c;前端页…

k8s之deployments相关操作

k8s之deployments相关操作 介绍 官网是这样说明如下&#xff1a; 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的目标状态&#xff0c;而 Deployment 控制器&#xff08;Controller&#xff09; 以受控速率更改实际状态&#xf…

数据交换平台_04_创建消息生产者和消费者

数据交换平台_04_创建消息生产者和消费者 目录概述需求:设计思路实现思路分析1.增加POM文件:2.创建消息的生产者和消费者3.生产者将数据封装成消息发送到ActiveMQ的队列或主题,消费者从队列或主题中接收消息并进行处理拓展实现参考资料和推荐阅读Survive by day and develop…

字符串中的第一个唯一字符(基数排序的思想应用)

问题描述 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入: s "leetcode" 输出: 0示例 2: 输入: s "loveleetcode" 输出: 2示例 3: 输入: s &…

10-Eureka-服务注册

10-Eureka-服务注册 1.Eureka注册中心: 注册user-service 将user-service服务注册到EurekaServer步骤如下: 1.在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖 <dependency><groupId>org.springframework.cloud</groupId><ar…

操作系统期末复习整理知识点

操作系统的概念&#xff1a;①控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff1b;②提供给用户和其他软件方便的接口和环境&#xff1b;③是计算机中最基本的系统软件 功能和目标&#xff1a; ①操作系统作为系统资源…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…

超详解——python数字和运算_——小白篇

目录 1.的位运算 2. 常用内置函数/模块 math模块&#xff1a; random模块&#xff1a; decimal模块&#xff1a; 3.内置函数&#xff1a; 总结&#xff1a; 1.的位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符&#xff1a; 按位与&…

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法

C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法 —— 2024-06-08 杭州 code review! 文章目录 C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法一.从一个函数中获取多个返回值的方法1. 使用结构体或类2. 使用`std::t…

【小白专用24.6.8】C#Lambda表达式

Lambda表达式可以采用以下任意一种形式的表达式&#xff1a; 1.表达式Lambda&#xff0c;表达式为其主体&#xff1a; (input-parameters) > expression 1 2.语句Lambda&#xff0c;语句块作为其主体&#xff1a; (input-parameters) > {<sequence-of-statements>…

Python使用rosbag使用getattr只能获取一层的数据,不能直接获取多层数据例如 a.b.c.d。使用for range写一个递归用来获取多层数据

使用for循环和range来遍历属性列表确实是一个更简单直观的方式&#xff0c;特别是不需要考虑性能优化和异常处理时。以下是使用for循环代替递归的示例代码&#xff1a; python def get_nested_attr(obj, attr_str): attrs attr_str.split(.) for attr in attrs: # 尝试获取下…