今天突然想起这个长度问题,写本文权当作加深印象好了。
java里面存在神奇的length和length(),当然也提一下size()
刚开始接触,总是傻傻分不清楚,以下记录学习步骤。
- 先说普遍规律
length适用于array相关,获取其长度
length()适用于与字符串相关的对象(String,StringBuilder等)
size()- 适用于集合对象(ArrayList,Set等) - 看看length和length()干了什么
.length一般直接访问数组的字段成员;而 .length()则是类似调用一种方法来访问字段成员。
通常情况,.length没有办法查看更底层实现,但是,.length()则可以。先看看.length()的实现
明显看出,底层还是.length的实现。然后,这个值value是什么呢?
走到这里也就不难看出了,String类型不属于8大基本类型数据,而且final修饰,但是,这个value就是String的底层实现,value相当于String的成员量参数。容易知道,String使用的是char类型的一维数据作为存储实现。回过头来看,String由char封装,.length()由.length封装,访问成员量自然用方法间接访问。
这说明,封装类型调用其封装方法获取成员变量值,这也符合java面向对象的封装性。