| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 一维数组二数维组 -> 正文阅读 |
|
[数据结构与算法]一维数组二数维组 |
目?? ?一.数组(一维数组)
|
数据类型 | ?byte/short/int/long | double/float | boolean | char | String |
默认值 | 0 | 0.0 | false | 空格 | null |
(查看栈和jvm的内存简图? ?---------->? ?!点击这里!)
(由我们为数组元素赋值,由系统计算数组长度! 上述格式也可以简写为: int[ ] arr={10,20,30};)
?(方法用完依然会弹栈的哈!由于小编的粗心,给整忘了!)
二维数组的数组元素是一维数组的数组.也就是数组嵌套着数组.那么为什么要有二维数组呢?
?假如我们现在需要统计学校每个班的学生的姓名!用一维数组时:第一个班级创建一个数组来装名字,第二个班级再创建一个数组来装名字,有多少个班级就需要多少个一维数组来装.而二维数组就只需要创建一个用来装每个班名字的一维数组就可以了!
//用一维数组时:
String[] arr={"张","三","李","四"}; //第一个班级的姓名
String[] arr2={"王","五","刘","六"}; //第一个班级的姓名
//.......
//用二维数组时:
String[] arr{{"张","三","李","四"},{"王","五","刘","六"}......}
还有其他定义格式:int arr[ ][ ]=new int[3][2];或int[ ] arr[ ]=new int[3][2];(不建议使用这两种形式)
相关代码的意思:? ? ? ? ? ? ? ? ? ? ? ??
int[][] arr=new int[3][2];?
arr[0]; //取出的是二维数组中的第一个元素,也就是第一个一维数组
System.out.println(arr[0]); //输出的是第一个一维数组的地址值
arr[0][0]; //取出的是第一个一维数组的第一个数组元素
System.out.println(arr[0][0]); //输出的是第一个一维数组的的第一个元素.现在是默认为0
arr[0][0]=100; //给第一个一维数组的的第一个元素重新赋值
?int[ ][ ] arr=new int[3][ ];这样也是可以的.第二个中括号不定义长度.
此时System.out.println(arr[0][0]);? ?输出的是null.这是为什么呢?
如果定义二维数组时,指定了一维数组的长度,就会开始自动初始化一维数组的长度.内存图如下:
?由图中可知,如果给一维数组定义了长度,就会自动初始化一维数组的长度.如果没有定义,就会成为最开始开辟出来的空间,里面没有初始化一维数组的长度.也就是所有的初始值为null!
如果此时按照arr[0][0]=10;这样进行赋值的话,就会报空指针异常.因为此时指向的是null.如果想手动赋值:可以给二维数组赋值相应的以为数组.如下面的代码所示:
int[][] arr=new int[3][];
arr[0]=new int[4];
arr[1]=new int[3];
arr[2]=new int[4];
格式: Int[ ][ ] arr=new int{{1,2,3},{4,3,5}};? ? ? 可以简写为? ? ? int[ ][ ] arr={{1,2,3},{4,3,5}};?
数组一旦定义,其长度就固定不变了!也就是访问的数组元素索引不存在!越出数组范围了!
int[] arr=new int[3];
System.out.println(arr[3]);
空指针异常针对所有引用数据类型,都有可能出现(所指向的对象为空时,就会出现空指针异常):
int[] arr=new int[3];
arr= null;
int a=arr.length;
System.out.println(a);
如果这个对象用完之后置为null,更加有利于该对象尽快回收的哈!!!
(将数组中的所有的元素都输出就是遍历!)
//顺向遍历
int[] arr={11,22,33}; //定义数组
for (int i=0;i<arr.length;i++){ //索引从0开始,所以i最开始为0,遍历的索引号为0,1,2.所以比数组的长度要小
System.out.println(arr[i]); //输出11,22,33
}
//反向遍历
for (int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]); //输出33,22,11
}
想要查看更多习题,?"点击这里"?
(小编也在努力学习更多哟!以后会多多分享哒!)
希望对友友们有所帮助!!!!?
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/23 0:31:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |