精华内容
下载资源
问答
  •  m:表示这个二维数组有多少个一维数组。 n:表示每一个一维数组的元素有多少个。  //例:int arr[][]=new int[3][2];  如下图   格式二:  数据类型[][] 数组名 = new 数据类型[m...

    区分三种初始化方式:

    格式一:

        数据类型[][] 数组名 = new 数据类型[m][n];

              m:表示这个二维数组有多少个一维数组。
              n:表示每一个一维数组的元素有多少个。

        //例:int arr[][]=new int[3][2];

        如下图

     

     

    格式二:

        数据类型[][] 数组名 = new 数据类型[m][];
          m:表示这个二维数组有多少个一维数组。
          列数没有给出,可以动态的给。这一次是一个变化的列数。

    如下图

    格式三:
        基本格式:
          数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
        简化版格式:
          数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};

    如下图:

    内存分配详解:

    引用类型的默认值为null,定义二维数组时,会在堆内存为其分配内存空间(必须知道二维数组的行数,即一维数组的个数,才能够为其分配内存空间),首先给一个地址值0x001给arr,然后为二维数组里的一维数组分配内存空间,分别给一个地址值给一维数组,即0x0001给arr[0],0x0002给arr[1],0x0003给arr[2]。如果arr[3][]第二个元素值没有给出(相当于里面的一维数组的元素个数不知道),即以格式2定义二维数组,那么就无法为一维数组静态的分配内存空间了,即打印出来的arr[0],arr[1],arr[2]地址值是默认值null,可以动态的为其分配内存空间。

    转载于:https://www.cnblogs.com/zhaoyuan72/p/10751303.html

    展开全文
  • 今天在学习JAVA二维数组时,发现和C++二维数组分配不同: JAVA中, 定义了一个二维数组arr[3][4],输出arr和arr[0]发现两个地址不一样。 而对于C++来说应该是一样的。所以这就涉及到两种语言二维数组的内存分配的...

    今天在学习JAVA二维数组时,发现和C++二维数组分配不同:

    JAVA中, 定义了一个二维数组arr[3][4],输出arr和arr[0]发现两个地址不一样。

    而对于C++来说应该是一样的。所以这就涉及到两种语言二维数组的内存分配的区别。

    找到一篇比较清楚的blog(来自博主忆之独秀):




    Java二维数组的内存结构图:

    今天看了个视频,说Java中二维数组是这样的:java中的二位数组是按维存储的。


     
    在Java中是可以这样的,二维数组有三种定义格式!
    定义格式1:
    定义格式1的内存图:

     
     
    定义格式2:
     
    定义格式2的内存结构图:

     
     
    定义格式3:
    定义格式3内存图:

    C语言二维数组的内存结构图:
     
    突然,感觉和自己脑海中C的不一样。还专门去看了下C的。
    [cpp] view plain copy
    1. void main()  
    2. {  
    3.     int a[3][2];  
    4.     cout << a <<"\t"<< &a << endl<<endl;  
    5.       
    6.     cout << a[0] << "\t" << a[1] << "\t" << a[2] << endl << endl;  
    7.   
    8.     cout << &a[0][0] << "\t" << &a[0][1] << endl << endl;  
    9.     cout << &a[1][0] << "\t" << &a[1][1] << endl << endl;  
    10.     cout << &a[2][0] << "\t" << &a[2][1] << endl << endl;  
    11.   
    12. }  

     
    运行结果:


    也就是说,C语言的二维数组确实是下面这样:
    ,C语言的二维数组是连续一维存储的。



    所以这就让我明白了,Java的二维数组和一维数组的内存其实是分开分配的,而C++中二维数组的内存其实就是一维数组的内存所组成的。
    而且,C++中在定义二维数组时:只允许int arr[][3]={1,2,3,4,5},只允许缺省二维数组的个数,因为可在元素列表中得出二维数组个数=2; 而Java中:可出现int[][] arr=new int[3][],因为要结合图理解,它是先分配二维数组的内存的,一维数组的地址可以为null(注意若在此时访问arr[0][0],编译通过,但运行输出:NullPointerException),可在之后动态分配,如arr[0]=new int[4],才分配给你一维数组一个地址。

    因此,应对所学知识有更深理解,见图操作结果:



    而且比较有趣的是在博客上发现这样一个例子:
    1. public class Test3 {  
    2.     public static void main(String[] args){  
    3.         int test[][]={{1,2,3},  
    4.                       {4,5,6},  
    5.                       {7,8,9},  
    6.                       {10,11,12},  
    7.                       {13,14,15}};  
    8.         for(int row=0;row<5;row++){  
    9.             for(int col=0;col<3;col++){  
    10.                 System.out.print(test[row][col]+"\t");  
    11.             }  
    12.             System.out.println();  
    13.         }  
    14.         System.out.println("-------------------");  
    15.         test[4]=test[3];  
    16.         test[3]=test[2];  
    17.         test[2]=test[1];  
    18.         test[1]=test[0];  
    19.         for(int col=0;col<3;col++){  
    20.             test[0][col]=0;  
    21.         }  
    22.         for(int row=0;row<5;row++){  
    23.             for(int col=0;col<3;col++){  
    24.                 System.out.print(test[row][col]+"\t");  
    25.             }  
    26.             System.out.println();  
    27.         }  
    28.     }  
    29. }  

    这在Java中编译通过且完美运行,结果:


    其中我觉得需要好好理解的是:这个test[1]不像C++中是一个地址值,而更像是一个指针,能被赋予新的地址值。若放到C++中,这是“修改地址”,不能通过编译。
    在这里,test[1]指向了test[0]的数据内存块,所以在test[0]数据更改时,test[1]的元素输出也随之更改。而test[2]指向的是test[1]原本指向的内存块,test[1]转移了指向,但其原本指向的内存块数据并未变,所以test[2]的元素输出不变。

    但是我觉得很奇怪也很新鲜的一点就是,其实从内存分配图上来说:

    其实也能感觉到二维数组的内存和一维数组的内存是分开分配的,并由指针连接。
    展开全文
  • java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法二维数组的定义 type arrayName[ ][ ]; type [ ][ ]arrayName Java 二维数组的声明、初始化和引用...

    java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法

    二维数组的定义 type arrayName[ ][ ]; type [ ][ ]arrayName Java 二维数组的声明、初始化和引用 二维数组的声明、初始化和引用与一维数组相似,这里不再详......

    java定义二维数组的几种写法_计算机软件及应用_IT/计算机_专业资料。java定义二维数组的几种写法 //定义二维数组写法 1 class numthree { public static void main......

    Java 程序设计实验报告 实验名称姓名 班级 学号 成绩 数组的应用设计 电子与信息工程学院实验内容:成绩的查询及排序 1 实验目的 创建一维数组和二维数组,实现数组的......

    java二维数组_工学_高等教育_教育专区。java编写的动态二维数组的输入与矩...

    也有静态初始化和动态 初始化两种方式。首相来看一下动态初始化: 1int[][] arr1 = new int[3][2]; 这是创建一个二维数组,其中包含 3 个一维数组,每个......

    java 二维数组 与 C、C++一样,Java 中多维数组可以被看作数组的数组...

    java 中数组的定义及使用方法详解 数组:是一组相关变量的集合 数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数 组按照使用可以分为一维数组、二维......

    java数组之二维数组_计算机软件及应用_IT/计算机_专业资料。数组的元素也可以是数组, 每个数组的一个元素都是由一个一维数组构成, 被称为二维数组。 同样,多维......

    关于java用二维数组编杨辉三角(具体到步骤)_工学_高等教育_教育专区。用java语言编杨辉三角,用二维数组表示。 import javax.swing.JOptionPane; // import 是引入......

    Java 中数组的声明一维数组的声明: 在 Java 中,数组是独立的对象,有自身的方法,不是变量的集合。 数组的声明: 类型标识符 数组名[ ] 或者 类型标识符[] ......

    intArray[ ][ ]={{1,2},{2,3},{3,4,5}}; Java 语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配 的,所以不要求二维数组每一维的大小......

    package hello; public class 二维数组变一维 { public static void main(String[] args) { // TODO 自动生成的方法存根 int a[][]= {{12}{14}}; int ......

    Java多维数组学习源代码_计算机软件及应用_IT/计算机_专业资料。1.定义一个二维数组,方法1 public class HelloWorld { public static void main(String[] args) ......

    java数组-array_计算机软件及应用_IT/计算机_专业资料。数组教学目标 ? 掌握一维数组创建和使用的方法 ? 掌握二维数组创建和使用的方法 ? 掌握数组遍历 ? 掌握填充......

    java数组与方法_IT/计算机_专业资料。java中数组与方法的使用 数组的定义及使用 数组的定义及使用数组是一组相关数据的集合, 一个数组实际上就是一连串的变量, ......

    JAVA 基础语法_数组 一、 选择题 1、 以下能对二维数组 a 进行正确初始...

    输出一维数组中所有元素值 1. 2. 编写程序名为: Test2.java; 创建二维数组并初始化; 每一维元素有: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10......

    数组JAVA代码_IT/计算机_专业资料。public class Matrix //矩阵类 { private int element[][]; //存储矩阵元素的二维数组 public Matrix(int m, int n) //......

    7) 如果把二维数组看成一维数组,那么数组的元素是 数组。 8) Java 中数组的下标的数据类型是 。 9) 不用下标变量就可以访问数组的方法是 。 10) 数组最小......

    蛇形矩阵的两种实现方法(java 版本 版本) 蛇形矩阵的两种实现方法 看到一个关于蛇形矩阵的帖子, 想了下如何一行一行打印, 无须建立二维数组存储。 基本思想如下: ......

    小学升初中的语文考试中出现了不少的满分作文,很多的满分作文都写得非常不错,值得那些即将小升初的同学的参考和学习,这样子才能强化语文写作,也使写作水平得到一定的提高,小编整理了一些小升初的满分美文供同学

    网上热捧书《别笑,我是高考(论坛)零分作文》真实性受质疑□晚报记者 张骞 报道当高考生都在朝高考满分作文努力时,近来,一本刚出版不久的名为《别笑,我是高考零分作文》的书,俨然摆出一副为零分作文“正

    好的作文不怕没人发现,下面是小编整理的高中满分作文,欢迎阅读。  高中满分作文一:智者若树  春花的智慧在于燃尽生命的怒放,于是有了草长莺飞,最美人间四月天。夏蝉的智慧在于蛰伏地底十七年,于是有了

    一个把祖国花朵培养成材之地——校园。  校园,它有着神圣的使命。  校园一个赋有巨大责任的胜地,它肩负着培养学生的责任,它让我们懂得了如何做人,提高了我们的素质,教育了我们,把我们培养成为有用得人

    抵达不了的地方叫远方,多少人就这样一直在路上。  ——题记  人们常爱问:“你的梦想是什么呀?”  我傻傻地一笑,“环游世界!”  虽然,我知道这是一个美丽而残酷的世界。  当我第一次见到世界的雏

    一、 环保  1 Its our duty to protect our environment。  2 It is very important to take care of our en

    月考刚一完,数学老师便给每人发了一张参考答案,我向纸上扫了一遍,一个个答案都合我意,我心中不由得得意了:满分!可冷不防半路杀出个程咬金,最后一个12分题参考答案是“17”,而我的答案却是“11”!

    满分作文老师我刚刚从别的学校转来,已经上四年级了。虽然时间不长,但是我新认识了许多老师,在这些老师中,我最喜欢我的语文老师姜玉宏了。姜老师今年三十岁左右,中等个子,长得很漂亮。一头乌黑的秀发披散在脑

    “海上升明月,天涯共此时。”我一直期盼的中秋节终于来到了。小编今天为大家带来中秋满分作文,让我们一起欣赏一下吧。  中秋满分作文【1】  怀着无比轻快的心情,我们迎来了上中学以来的第一个中秋佳节。

    我是一个活在想象之中的人。每天呢,都过分地沉浸于自己的想象里,不可自拔,甚而自得其乐,沾沾自喜。  或许是此缘故吧,在面对这个现实社会,却不善交际应酬,也别说巧言令色。不知圆滑世故,更不懂察颜观色

    我们匆匆地告别,走向各自的远方,没有语言,更没有眼泪,只有永恒的思念和祝福,在彼此的心中发出深沉的共鸣。下面小编为大家搜索整理了分别满分作文,希望对大家有所帮助。  不是我不懂事,而是你们不懂我做

    在逆境中是什么引导你屡仆屡起?在顺境中又是什么指导你不断攀升?下面是小编为你整理了适应满分作文,希望能帮助到您。  适应满分作文(1)  诗人雪莱说过:“如果你很珍惜自己的羽毛,不让翅膀受一点伤,

    “年味”是一个名词。那什么是年味?年味就是全家团圆的喜乐气氛;就是晚辈孝敬长辈围坐在桌前敬的那一杯酒;就是屋外烟花闪耀飘进鼻内的一股幽香;就是妈妈忙前忙后做的一顿年夜饭;就是玩着烟花时仿佛又回到童

    对话1  一直固执地相信自己十五年前曾经来过这里,尽管那时的我步履蹒跚的连路都走不好,这种话听起来蹩脚。  依然固执的相信,当时我就站在山海关的某一个角落,静静地见证了一场死亡的盛典,一次诗性的绽

    追梦,就要以蓄势待发的磅礴气势做到不鸣则已,一鸣就必须惊得天下人!这是小编给大家推荐的追梦满分作文,一起来看看吧。  【篇一:追梦的旅途】  梦想是大家公共的财产,每个人都有梦想,都有为梦想而奋斗

    作文告别(共6篇)告别 满分作文告别过去﹒ 告别网吧我亲爱的网吧,自从与你相识以来,我体验到了从未有过的幸福。我想玩游戏,你陪我玩;我想看电影,你陪我看;我想聊天,你陪我聊……你总是心甘情愿地陪伴着我。你的温柔,你的体贴,让我倍感温暖。于是我上课时想你,下课时想你...

    全国卷1范文(共6篇)2014高考全国新课标卷I满分作文全国新课标卷I 以“两人过独木桥”为材料作文(新课标I卷适用于河北、河南、山西、陕西考区) 真题再现阅读下面的材料,根据要求写一篇不少于800宇的文章。(60分)“山羊过独木桥”是为民学校传统的团体比赛项目。规则是,双方队员两...

    你是我的作文600(共4篇)中考满分作文600字:你是我最好的朋友她,我最好的朋友之一。短短的黑发,散发着“伊甸园”独有的香气。眼神中每每都会闪烁着渴求的目光。不爱穿裙子,甚至从小到大只穿过一次裙子。只穿t恤、长裤、厚重的棉袄„„活脱脱的一个假小子。为了这事儿还闹了一个哭笑不...

    作文及分析(共6篇)2013中考满分作文及评析(一)2013年中考满分作文赏析(一)2013海南中考满分作文及评析:今天属于我整天沉浸在紧张的学习中,唉,累死我了!今天我要过属于自己的周末,今天属于我。早上,一睁开眼就望见窗外投来的一缕阳光,这阳光聚集到地上形成一个小光点,恍恍惚...

    作文感动(共6篇)感动类满分作文感动类的满分作文幸福的感动有一种感觉叫做幸福,有一种幸福叫做感动。而我,正是会享受这种幸福的一个幸运女孩。那年冬天,雪下得纷纷扬扬。除夕前那晚,我趴在窗边看雪。灯光中满是飞舞的雪片,仿佛抑制不住满心的喜悦。接连不断的鞭炮声,洋溢着春节...

    全国卷作文(共6篇)2016年全国卷1高考满分作文2016年全国卷高考满分作文要求:1、结合材料的内容和寓意,选好角度,确定立意,明确文体,自拟题目;2、不要套作,不得抄袭。一点进步,一种人生暮色暗淡,残阳如血。北方的风凛冽地刮着,刮得人生疼。一个十八岁的少女坐在河边,手里拿着...

    作文《幸福》(共6篇)“幸福”话题满分作文 例文“幸福”话题作文精选及点评(6篇)幸福是什么?幸福在哪里?人们一直在追问、在寻找。其实,幸福原来就是父母给你的一杯清茶,老师给你的赞许的目光;幸福原来就是你给别人的一声喝彩,你对别人的一次宽容;幸福原来就是亲近自然的经历,...

    你真作文(共6篇)《有你真好》满分作文2010年邵阳中考满分作文:有你真好有你真好有你真好,孤单的时候也不寂寞。有你真好,失落的时候也不彷徨。有你真好,要输的时候也不放弃。一“明月几时有”又是一年中秋节,月亮仍旧是那个月亮,可是在我们眼中它有点孤单。这是我在异乡求学的第...

    展开全文
  • 1.当我们编译运行后,main方法首先进栈,然后分配一个二维数组变量 2.在堆内创建一个实体,其有一个地址假设为0x0011,然后分配连续的三块空间,里面有3个一维数组,一维数组是引用数据类型的,所以有默认初始化值...
    假设有一个二维数组 int [][]a=new int[3][2];//有三个一维数组,并且没有被赋值
    1.当我们编译运行后,main方法首先进栈,然后分配一个二维数组变量
    2.在堆内创建一个实体,其有一个地址假设为0x0011,然后分配连续的三块空间,里面有3个一维数组,一维数组是引用数据类型的,所以有默认初始化值null,每个一维数组中还有两个元素,这两个元素并不是存在这个一维数组中的,这三个一维数组,都有自己独立的空间地址,其里面存储的是其对应的两个元素的地址
    3.紧接着创建二维数组中存储数据的第一个一维数组,其会分成两块空间,并且会把其地址赋值给存储地址的第一个一维数组。然后创建存储数据的第二个一维数组,并且把该数组值赋值给存储地址的第二个数组。最后创建存储数据的第三个一维数组,并且把该数组值赋值给存储地址的第三个数组。

    System.out.println(a);//打印的是二维数组的地址0x0011
    System.out.println(a[0]);//打印的是一维数组的地址0x0022
    System.out.println(a[0][0]);//打印的是一维数组的值0
    展开全文
  • 一.一维数组 (一)一维数组定义格式 ...()一维数组的初始化 Java中的数组必须先初始化,然后才能使用 (1)初始化的分类: a:动态初始化: 只指定长度,由系统给出初始化值 b:静态初始化...
  • 为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第...Java 并不直接支持二维数组,...
  • java二维数组

    2017-11-27 09:53:59
    java二维数组
  • Java二维数组

    2016-11-05 14:43:31
    Java二维数组二维数组的声明与分配内存数据类型 数组名[][] ; 数组名 = new 数据类型[行的个数][列的个数] ;int score[][];// 声明整型数组 score score = new int[4][3];//配置一块内存空间,供4行3列的整型数组...
  • Java一维数组、二维数组一、 一维数组1.1 图解1.2 静态创建1.3 动态创建练习冒泡排序Arrays 工具类二、 二维数组2.1 图解2.2 动态创建-取值-赋值-遍历2.3 静态赋值 一、 一维数组 数组的特点: 存储多个数据 只能...
  • 数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组。是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列。 目录一维数组二维数组数组的基本操作 一维数组 二维数组 数组...
  • 1.3 Java二维数组详解

    2020-09-21 14:56:52
    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的...Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。声明二维数组的语法如下: type arrayName
  • JAVA一维数组二维数组

    2019-10-07 20:41:26
    数组概念 数组是存储同一种数据类型多个元素的集合。...就是为数组中的数组元素分配内存空间,并为每个数组元素赋值! 动态初始化: 只指定长度,由系统给出初始化值 静态初始化: 给出初始化值,由系统决定...
  • Java 二维数组的初始化

    千次阅读 2019-05-17 21:26:52
    关于Java 二维数组的初始化
  • 二维数组:就是元素为一维数组的一个数组。 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组。 n:表示每一个一维数组的元素有多少个。 注意: A:以下格式也可以表示二维...
  • 数组的一些特性java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float...
  • 对于 Python 来说,序列是最基本的数据结构。...对于 Java 来说,数组是在内存中存储相同数据类型的连续的空间,声明一个数组就是在内存空间中划出一串连续的空间。 数组名代表的是连续空间的首地址,通过首地
  • java基础(方法、数组、java内存分配二维数组) A.方法(掌握) 格式: 修饰符 返回值类型 方法(参数类型 参数名1…){ 方法语句; return 返回值; } 注释:参数类型:参数的数据类型 参数名:变量名 ...
  • java二维数组两种初始化方法

    万次阅读 2019-04-25 00:06:39
    写这篇博客的原因是因为从大一学习c语言开始 就对二维数组的声明 和初始化 一直没有搞懂。。。。直到学到了Java依旧搞得不是很清楚。 先看一道Java的基础题 这道题 错误的选项 是 B. 二维数组的初始化的两种...
  • Java维数组内存分配 堆区中分配空间后会把每个数组元素初始化为0。array是引用变量,它在栈区占用的空间大小为4bytes。 由此可以看出,数组变量其实就是指针。它存储着数组元素在堆区的首地址。 Java中对象数组...
  • 2、2二维数组内存结构 2、3二维数组的遍历 3、数组“扩容”与拷贝 参考之前博文java:数组拷贝与“扩容” 1、一维数组 数组,是一个包含相同数据类型的集合。集合里存放的是相同类型的数据,则把这个...
  • 二维数组内存图解

    2019-03-26 12:29:15
    package javase2; public class Array2test { public static void main(String [] args) { /* * 二维数组:就是元素为一维数组的一个数组 ...* 格式:数据类型[][]数组名=new...* 注意:以下格式也可以表示二维数组...
  • 1.数组在c语言中,数组可以认为是相同类型数据的集合举个...需要的变量名也会很多,这个时候就需要考虑一下使用更科学的方法来储存数据#includeint a[5],这句话定义了一个数组,表示在内存分配了一个可以保存5个整数...
  • JVM内存模型 1方法区 主方法存在的地方存储被JVM加载后的,类信息.常量.静态变量即时编译后的数据信息 2;java虚拟机栈 每当局部变量被创建的时候创建一个栈帧用于存储该方法的局部变量,操作栈,动态链接,方法出口等 3:...
  • Java创建二维数组

    万次阅读 多人点赞 2019-08-11 23:01:44
    1、Java创建二维数组:int [][] array = new int[6][6]; 2、直接创建二维数组并赋值:int [][] array = {{1,2,3},{1,2,3},{1,2,3}}; 3、二维数组的声明: 先声明再分配内存 数组声明:数据类型 数组名[][]; ....
  • Java中,声明数组的语法有两种: 1.数据类型 数组名[];...来看看二维数组分配方式: 例如:int a[][] = new int[2][3]; 其内存空间分配示意图如下: 我画的图很丑,我想表示的意思是要注意:a.le

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,627
精华内容 9,050
关键字:

java二维数组内存分配

java 订阅