Java中获取长度时括号使用差异的基础疑问求助
为什么Java中String的
length()带括号,而数组的length不带括号? 嘿,这个问题问得特别实在——很多刚学Java的朋友都会在这里犯嘀咕,咱们把这俩的本质拆开说就明白啦:
String的length()是成员方法String是Java中的一个类,你代码里的message是这个类的实例对象。length()是String类提供的一个成员方法,它的作用是返回字符串包含的字符数。因为是方法调用,所以必须加上括号()(哪怕这个方法不需要传入参数)。
其实String内部是用一个char数组来存储字符的,length()方法本质上就是返回这个内部数组的length属性,但Java把它包装成方法对外提供,这也是面向对象封装思想的体现。数组的
length是成员属性
数组在Java里是一种特殊的引用类型,当你创建int[] numbers = {2,3,4,5,6};时,JVM会在内存中创建一个数组对象,同时给这个对象自带一个成员属性length,这个属性的值就是数组的元素个数(创建时就固定了,数组长度不可变)。所以我们直接访问这个属性就行,不需要加括号。
举个更直白的对比:
- 调用方法是“让对象做一件事”,比如
message.length()是让字符串对象返回它的长度; - 访问属性是“直接拿对象身上存着的某个值”,比如
numbers.length是直接拿数组对象身上已经存好的元素数量。
这样是不是就清楚啦😉
内容的提问来源于stack exchange,提问作者Adetya Aggarwal
相关产品推荐
相关产品推荐

