![03cc9daccbdf9fbef3ef8a8470ba4883.png](https://i-blog.csdnimg.cn/blog_migrate/5ffe8ea47cf889b7dfbf9a7ff0ebff1a.jpeg)
-------------[感谢小郡提供的图片]
[广告位招租] ----------------------------------------------------------------
------------------------------------------------------------------------------
1.二维数组的定义
二维数组简言概之就是存储数组的数组,存储方式如下图所示
![38f9b188054afeb91bca12369cf6d0d1.png](https://i-blog.csdnimg.cn/blog_migrate/f22743b8f9d0d8787dac1a805f2ce49d.jpeg)
当我们键入String[][]=new String[ int i] [ int j] 这时栈区存储的变量是String类型引用变量同时在堆区开辟了一个引用数组(这个数组是用来存储引用变量的数组叫引用数组)这个引用数组又指向了堆内存中开辟的数组对象(万物皆对象)而这也就保证了二维数组可以用来存储三个不等长字符串。
2.二维数组的定义及其初始化
- 静态初始化
int [][]array={{1,2,3},{4,5,6},{7,8,9}};//
- 常规初始化
int [][]array=new int[常量][常量];//
- 动态初始化
int [][]array=new int[变量][变量];//java中数组定义允许用数组声明其长度
3.二维数组的输出
- 二维数组需要用到两个for循环语句控制输出 外层控制行内层控制列
![58d49fa502fd8d82189f85a31b286fd4.png](https://i-blog.csdnimg.cn/blog_migrate/56d426807ca8ff29c0e84ce9d8466e34.png)
-------上图引自《java核心技术 | 》
- 如果想快速打印二维数组可以调用
System
![bc21283ea056e1b1527a2c007adf43a5.png](https://i-blog.csdnimg.cn/blog_migrate/e44be4ba2a1e0de62b1bef5c435f129d.jpeg)
-------上图引自《java核心技术 | 》
- Arrays.deepToString()与Arrays.toString()的区别
Arrays.deepToString()会返回二维数组中的值,而Arrays.toString()是打印里面一位数组的地址,对于Arrays.toString()不会打印出数组中的内容,只会以地址的形式打印出来。
4.简述java和c/c++在二维数组的区别
- java中没有二维数组的概念你可以认为是‘假’二维数组,java只有一位数组的概念,因为它创建了数组引用来指向在其位置(堆内存)开辟的一位数组。一位数组长度可以不等长,java中允许指定一维长度而不指定二维长度。
- c++中创建的二维数组是每一维都是相同大小不会出现不等长的情况这也就说明为什么我们在中穿创建二维数组时必须在第二个索引符号处赋初值。
-----------------------------------会持续更新完善文章内容----------------------------------