Java学习之二维数组定义与内存分配详解
2014-12-23 15:55
190 查看
二维数组:就是元素为一维数组的一个数组。
格式1:
数据类型[][] 数组名 = new 数据类型[m]
;
m:表示这个二维数组有多少个一维数组。
n:表示每一个一维数组的元素有多少个。
注意:
A:以下格式也可以表示二维数组
a:数据类型 数组名[][] = new 数据类型[m]
;
b:数据类型[] 数组名[] = new 数据类型[m]
;
B:注意下面定义的区别
int x;
int y;
int x,y;
int[] x;
int[] y[];
int[] x,y[];
格式2:
数据类型[][] 数组名 = new 数据类型[m][];
m:表示这个二维数组有多少个一维数组。
列数没有给出,可以动态的给。这一次是一个变化的列数。
格式3:
基本格式:
数据类型[][] 数组名 = 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,可以动态的为其分配内存空间。
![](http://img.blog.csdn.net/20141223155856209?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY4NzM5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20141223162205781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY4NzM5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20141223162235297?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDY4NzM5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
格式1:
数据类型[][] 数组名 = new 数据类型[m]
;
m:表示这个二维数组有多少个一维数组。
n:表示每一个一维数组的元素有多少个。
注意:
A:以下格式也可以表示二维数组
a:数据类型 数组名[][] = new 数据类型[m]
;
b:数据类型[] 数组名[] = new 数据类型[m]
;
B:注意下面定义的区别
int x;
int y;
int x,y;
int[] x;
int[] y[];
int[] x,y[];
格式2:
数据类型[][] 数组名 = new 数据类型[m][];
m:表示这个二维数组有多少个一维数组。
列数没有给出,可以动态的给。这一次是一个变化的列数。
格式3:
基本格式:
数据类型[][] 数组名 = 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,可以动态的为其分配内存空间。
相关文章推荐
- Java学习之二维数组定义与内存分配详解
- Java学习之二维数组定义与内存分配详解
- JavaScript学习笔记3-附录(Java的各类型数据在内存中分配情况详解)
- java数组的定义和内存分配
- 【C/C++语言基础学习】在主函数的定义的指针数组、二维数组通过三级指针在被调用函数分配内存
- Java学习之旅基础知识篇:数组及引用类型内存分配
- Java数组概述、定义格式说明、初始化、内存分配及常见操作
- Java学习之旅基础知识篇:数组及引用类型内存分配
- Java基础学习9(一维数组及在内存中的分配)
- JAVA学习第四回:JAVA内存分配与垃圾回收机制:白头而新
- 数据结构 学习笔记之:结构体及其所定义变量的内存分配的问题
- C语言学习7 :二级指针定义,强制转换,多级指针初步,6级指针构造,错误应用*p=&a,错误应用 二级p2,void型指针的兼容性,malloc函数基本用法,malloc分配空间和堆栈空间的区别,验证malloc函数内存的分配,验证malloc函数的越界,内存泄漏,指针不能返回局部变量地址,内存分配
- [bxd学习java基本点]12.数组,泛型的使用是为了安全,借鉴数组的定义
- 基于Java 数组内存分配的相关问题
- 内存分配详解、指针与数组[C++][内存管理]
- java内存结构及内存分配详解
- java的各类型数据在内存中分配情况详解
- java的各类型数据在内存中分配情况详解
- JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
- java 内存分配 详解