目录
- 一. .length
- 1. .length究竟有多长?
- 2. 为什么会有.length呢?
- 3. 二维数组的创建方法
- 4. 数组是对象
- 二. .length()
- 1. .length()怎么用呢?
- 2. char数组怎么转换为String
- 3. String怎么转换为char数组
- 三. 对比
- 1. 为什么数组不像String,没有自己的类呢?
- 2. 为什么String不能增加一个.length属性呢?
一. .length
1. .length究竟有多长?
先来回答两个问题,下面这两条
int[][] a1 = new int[3][100];
int[][] a2 = new int[3][6];
System.out.println(a1.length);
System.out.println(a2.length);
两个答案都是3。为什么会这样呢?我们看下面这张图:
这张图清晰的展示了二维数组在java语言中是如何存储的。二维数组其实在java语言中是按一维数组进行存储的(如果把二位数组比作一个矩阵的话,就是只存有几行),存储了各个连续存储单元的起始地址(eg:scores[0])。
2. 为什么会有.length呢?
那么为什么定义了一个数组之后,就可以使用.length属性呢?
因为数组本身是个容器,当数组创建好那一瞬间,申请的内存空间就是确定的,所以数组的长度自然也是确定的,它的类型是public final int,如下图:
3. 二维数组的创建方法
都说到这了,我们再回顾一下二维数组的创建方法:
- 数据类型[ ][ ] 数组名=new 数据类型[数组长度][数组长度];
int[][] a = new int[3][4];
- 数据类型[ ][ ] 数组名=new 数据类型[数组长度][ ];
int[][] a = new int[3][];
- 数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{{数据1,数据2,…,数据n},{数据1,数据2,…,数据m},…,{数据1,数据2,…,数据q}};
- n,m,q可以不相同,也就是每一列的数据个数可以不相同。
int[][] a = new int[][]{{1},{1,2},{1,2,3}};
- 数据类型[ ][ ] 数组名=new 数据类型[数组长度][ ];
- 这个方法可以看作是上一个方法的简化。
int[][] a = {{1},{1,2},{1,2,3}};
验证一下方法三和方法四是不是一样的:
int[][] a3 = new int[][]{{1},{1},{1}};
int[][] a4 = {{1}, {1}, {1}};
System.out.println(Arrays.deepToString(a3));
System.out.println(Arrays.deepToString(a4));
得出结果:
还真是一样的,以后还是简写吧!
4. 数组是对象
敲着敲着,发现这输入.length的时候,.之后,怎么有这么多选项,如下图:
clone()是第一个方法,就那这个开刀吧,我把鼠标放到方法上,发现了这个,如下图:
好家伙,你小子,数组是对象,继承自Object,那我试试下面这个报错不:
还真不报错,得出结论:数组是对象。
二. .length()
1. .length()怎么用呢?
这玩意怎么用呢,看下面
String s = "daf-asf";
System.out.println(s.length());
2. char数组怎么转换为String
char[] r = {'a', 'b', 'c'};
//法一:
String s1 = new String(r);
//法二:
String s2 = String.valueOf(r);
//法三:
String s3 = r.toString();
3. String怎么转换为char数组
String s = "daf-asf";
char[] t = s.toCharArray();
三. 对比
1. 为什么数组不像String,没有自己的类呢?
没有必要。因为即使有了Array类,还需要额外的空间来存放数组。(这有点像先有鸡还是先有蛋的问题)String的底层是用char数组来实现的,不用考虑这个问题。
2. 为什么String不能增加一个.length属性呢?
没必要,因为String的底层是char数组,char数组已经有这个属性了。但是在java语言中,String与char数组又不是同一个东西,所以,就有了length()方法。
参考:
https://blog.csdn.net/weixin_52139713/article/details/126018792
https://blog.csdn.net/weixin_39959126/article/details/114153841