java学习之二维数组
java当中的二维数组,存储一组比较特殊的对象。他存储一个数组,同时存储的数组当中又存储着元素。
java二维数组的声明方式一:
class Arr2Demo
{ public static void main(String[] args)
{
/**
*二维数组的定义格式:元素类型[][] 数组变量名称 = new 元素类型[3][];第一个维度必须
*确定,也就是第一个方括号
*/
int[][] arr = new int[3][];
} }
二维数组出现的意义,二维数组之所以会出现是因为,现在当数据一多的时候我们往往希望把他们存储起来,比如说:
现在有甲乙两个成员,他们当中分别各有一组数字:
甲:34,56,78,22
乙:31,53,79,20
假如我们现在要把这两者存储起来,我们要做的就是把这两者存储在一个数组当中,那么即:
int[] arr = {34,56,78,22,31,53,79,20};
如果我们这个样子存储的话,势必不利于各个数据归属的区分,那么这个时候我们就引入二维数组。
数字多了,引入数组,数组多了就引入二维数组
int[][] arr2 = new int[2][4];
int[][] arr2 = new int[2][4];
arr2[0][0] = 34 ;
arr2[0][1] = 56 ;
arr2[0][2] = 78 ;
arr2[0][3] = 22 ;
arr2[1][0] = 31 ;
arr2[1][1] = 53 ;
arr2[1][2] = 79 ;
arr2[1][3] = 20 ;
那么二维数组在内存当中是如何存储的呢?

二维数组定义的另外一种方式:
同一维数组一样,二维数组也有一种简便的定义方式:即
int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ;
这个就是二维数组简单的定义格式,一个大数组当中又包括两个小的数组。
二维数组的长度:
class Arr2Demo
{ public static void main(String[] args)
{ int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ;
System.out.println(arr2.length);//2
System.out.println(arr2[0].length);//4
System.out.println(arr2[0].length);//4 } }
二维数组中数据的遍历输出:因为取出数据之后,还要取出数据当中的元素,这个就是大圈套小圈的思想,使用两个for循环:
class Arr2Demo
{ public static void main(String[] args)
{ int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ; for (int i = 0; i<arr2.length ; i++ ) { System.out.println("arr["+i+"] :");
for (int n = 0; n<arr2[i].length ; n++ ) { System.out.println("\t"+arr2[i][n]); } } } }
但是如果我们这个样子:
class Arr2Demo
{ public static void main(String[] args)
{ int[][] arr2 = new int[3][] ; for (int i = 0; i<arr2.length ; i++ ) { System.out.println("arr["+i+"] :");
for (int n = 0; n<arr2[i].length ; n++ ) { System.out.println("\t"+arr2[i][n]); } } } }
编译的时候不报错,但是运行的时候会报:
Exception in thread "main" java.lang.NullPointerException
at Arr2Demo.main(Arr2Demo.java:12)
因为此时arr[0]的值是null,是个空指针不指向任何元素,所以通过他引用其他的元素,就会报错。
java学习之二维数组的更多相关文章
- Java学习之二维数组定义与内存分配详解
二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. 注意: ...
- Java 学习笔记 二维数组和对象数组
定义二维数组 int[][] a = new int[4][5]; 可以不指定列数 int[][] a = new int[4][]; 获取行 int i = a.length(); 如果使用第一个例 ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数
JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数 示例如下 至少需要九个元素:"A","B","C",&q ...
- Java基础教程——二维数组
二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- Java基础学习之“二维数组”
一.鄙人对二维数组的理解 二维数组就是由多个数组并列而成 二.举例 1.普通数组(一维数组)的图像格式 2.二维数组的图像格式 代码 1 @Test 2 public void xueXi(){ 3 ...
- Java如何设定二维数组的上限?
在Java中,如何设定二维数组的上限? 以下示例中,使用arrayname.length来确定二维数组的上限(元素数目). package com.yiibai; public class Dimen ...
- 【转】java中定义二维数组的几种写法
原文链接 注:以下的 type[][] var 也可以这样申明 type var[][] type为数组的类型,var为变量名 写法一:行列固定的数组 //定义二维数组写法1 class Test { ...
随机推荐
- java中的mmap实现--转
什么是mmap mmap对于c程序员很熟悉,对于java程序员有点陌生.简而言之,将文件直接映射到用户态的内存地址,这样对文件的操作不再是write/read,而是直接对内存地址的操作. 在c中提供了 ...
- myeclipse一些技巧
ctrl+h-----------------查找字符串 ctrl+A 全选→ctrl+shift+f 代码格式化,排版 ctrl+shift+O 自动引用
- block没那么难(二):block和变量的内存管理
本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> 了解了 block的实现,我们接着 ...
- ref和out的区别在c#中 总结
ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.简单点说就是,使用了ref和out的效果就几乎和C中使用了指针变量一样.它能够让你 ...
- 【Android】碎片Fragment
1.碎片可以让界面在平板上更好地展示. 2.碎片是一种可以嵌入到活动中的UI片段,它能让程序更加合理和充分地利用一个大屏幕的空间.有自己的生命周期,能包含布局. 3.新建碎片类继承Fragment,可 ...
- angularjs google map markers+ ui-gmap-windows --->增加click 事件
jsp: <div class="modal-body viewOnMap"> <div class="cboxClose" ng-click ...
- 安装Visual Studio 2010时提示"The location specified for the help content store is invalid or you do not have access to it".
运行注册表: (运行->输入"regedit").在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v1.0中,删除"Loc ...
- opencar二次开发常用代码
<?php //创建Registry对象 //注册所有公共类 //创建Front类对象,作为请求分发器(Dispatcher) //根据用户请求(url)创建控制器对象及其动作. // 在Fro ...
- 共享受限资源,Brian的同步规则
说明:如果一个变量是boolean,则此变量是原子性的,即赋值和返回值简单的操作在发生时没有中断的可能. 递增不是原子性炒作. 解决共享资源竞争: 1. 通过加锁,锁语句会产生相互排斥的效果,此种机制 ...
- html招聘简历解析并入库测试
1.解析4天,一天用来熟悉Jsoup 2.入库,需要熟悉什么样的格式代码可以入库,将自己解析好的代码转为指定格式.总体框架的构建, 如何执行,需要读他人写的代码(很费时间).4天,包括晚上九点加班三天 ...