数组的length哪里来的

数组的length哪里来的

参考链接: https://www.cnblogs.com/qing-gee/p/12090216.html

https://www.iteye.com/blog/wallimn-332947

https://zhidao.baidu.com/question/2208438210718855348.html

在学习 java 基础中 关于长度有三个东东 length length() size() 很容易混淆

String 类的 length() 方法 表示字符串的长度

ArrayList 类 size() 方法 表示集合的长度

奇怪的事情发生了

那么length 到底在哪呢??? 无论定义什么类型的数组都可以用length 属性

length 表示数组的长度

作为超类(上帝类) Objdect 中也没有 length 属性

在JDK的源码中 length这个属性 在各种数据类型 都直接或间接指向了String类中 char value[]

更奇怪的事情发生了

java 没有单独创建数组这个类 而且也找不到value.length 属性 是在哪一行代码里定义出来 直接就 value.length 这么硬(没办法谁让人家是JDK)

分析

可以想象下在String 类中 创建了char[] 字符数组 来存储 字符串

那么char 字符数组 是怎么创建出来的 个人感觉这个计算机底层有关

还有就是如果有数组这个类 那么也得有个地方(或者说容器)来存储数组里的数据

就好比一生二 二生三 三生万物 突然想知道 一是怎么来的

这里感觉是(借用沉默的王二的说法)java隐藏了 借用String类 直接定义了length的属性 省去了创建数组的类

最后看到了这个 https://www.iteye.com/blog/wallimn-332947 https://zhidao.baidu.com/question/2208438210718855348.html

------------------------------------------------------------------------------ 1。length不是array的方法或者属性 这个很好证明:new个数组出来 getDeclaredFields()是0 2。java对数组的操作是指令级的。

------------------------------------------------------------------------------

这个涉及到编译原理的问题,我只能说,这是一个编译规范。在规范中比如:int[],中的int告诉计算机这是一个整型数据,[]告诉计算机这是一个连续存储的内存地址空间,简单点说一个连续数据的存储空间就是数组,数组只是一个名称!!当然我只是简略的这样说,实际上数组是很复杂的!!

相关推荐

过去 10 年,智能手机抛弃了哪些东西?
365bet亚洲版体育在线

过去 10 年,智能手机抛弃了哪些东西?

📅 09-18 👁️ 4267