Java读文件添加到二维数组是什么

之前我们已经学习了一维数组的使用。这里提到的是二维数组。因为数组只能保存一行数据。在平时生活中,比如坐标等等,我们需要表示用二维的数组来表示。通过行号和列号来定位数据。下面,让我们开始学习吧

二维数组的声明及内存分配

  1. 二维数组,也可以理解为用一维数组保存的元素为一维数组。对于三维数组,等等,都可以这样划分。不过我们在编程中使用三维以上的数组比较少。因为那样使用起来非常不方便。下面我们来学习二维数组的声明。其声明同一位数组一样,可以先声明再分配内存,也可以声明时分配内存

  2. 第一种,先声明再分配内存的方式

    举例:   假如我们需要统计一个象棋上放的是黑棋还是白棋。这时,我们可以建立一个坐标,即以象棋盘的两边建立坐标轴。这时,我们可以这样定义这个二维数组:

  3. 第二种,即声明时即分配内存的方式。

    使用格式是: 数据类型 数组名[][] =new  数据类型 [行的个数][列的个数];

    使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:

  1. 二维数组的赋值,同一维数组类似。只是在{}中的每个元素又是每个一维数组。如下格式:

    二维数组中,可以有列数不相等的数组。即每一行的列数不同时。我们需要对每一行进行赋值。

  2. 对于这两种二维数组。我们分别来进行分别举例进行赋值。第一种是:列数相同的数组

    即第一行的人数和第二行的人数相同。

  3. 第二种:即列数不相等的数组的赋值格式如下:

    看上述例子。对于不同的行,其相应的列数是不同的。

二维数组元素的输入输出

  1. 二维数组元元素的访问及输出同一维数组一样,只是多了一个下标而已。在循环输出时,需要里面再内嵌一个循环,即双重循环来输出二维数组中的每一个元素。下面,我们来展示一个例子,把上面学过的知识来一块使用。这里使用列数不相等的二维数组:

    例子是输出二维数组中的每一行的数字。

  • 二维数组的不要越界访问,防止溢出

  • 如果有错误,请指出;如果您觉得不错,请点个赞!

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

版权声明:本文为博主原创文章,未经博主允许不得转载。 /u/article/details/

最近在尝试着采用Java在图像处理领域实践一下常用的机器学习算法。首先涉及到的是如何将一副图片读取到一个像素矩阵中(Java中就是一维或二维数组中)。在实践过程中,通过测试代码,我发现基于BufferedImage可以有两种获取像素矩阵的方式,但需要注意像素点的保存顺序问题。
具体表现在:本例中的图片是一副彩色图片(博客头像),大小为425*292,即宽度(Width)为425,高度(Height)为292。
放上测试代码(刚测试完就放上来了,不要纠结细节),后面再说明:

在方式一中,getRGB()方法,根据手册,其返回的int型数据(32位)为ARGB格式,其中ARGB各占8bit。getRGB的两个参数x,y分别对应像素点的横纵坐标,但需注意的是,以图片左上角点为坐标原点,x轴正方向是沿着width方向的,y轴正方向是沿着Height方向的。不信的同学,可以试着把二者调换,就会发现系统会报数组溢出的异常。
在方式二中,像素会通过getPixels()方法被保存在一个一维数组中。其中temp数据为读取数据的缓冲区,其大小的确定一定要是其图像通道数(通过getNumBands()获得)的整数倍,例如这里的彩色图片有RGB三个通道,所以通道数就为3。在最终得到的结果一维数组中,一维数组的大小为Width*Height*NumBands。此处,一个像素点占三个位置(R,G,B),与方式一得到的值作比对时,才发现,这里的一维数组中,像素点的排列顺序是按着Width横向扫码得到的。
鉴于操作的便捷来说,个人肯定偏向于方向一,首先它把RGB值整合到了一起,不像方式二中是分开的三个int数,二是二维数组相较于一维数组,肯定更加接近矩阵的概念,便于运算。

我要回帖

更多关于 二维数组是什么 的文章

 

随机推荐