size()是集合方法,length是数组属性,length()是字符串方法;集合用size(),数组用length,字符串用length(),三者不可互换。

size() 是集合的方法,length 是数组的属性
Java 中 size() 只能用在集合类上,比如 List、Set、Map 等,它返回当前集合中实际包含的元素个数。这个值是动态的,随增删操作实时变化。
length 不是方法,而是数组的公共属性,只能用于数组类型(如 int[]、String[])。它表示数组在创建时分配的固定容量,哪怕所有元素都是 null 或默认值,length 也不变。
字符串用 length(),不是 length 也不是 size()
字符串对象(String)既没有 length 属性,也不能调用 size()。它提供的是 length() 这个实例方法,用来获取字符串中 Unicode 字符的数量(包括空格、换行符等)。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
"abc".length()→ 返回3 -
"".length()→ 返回0 -
"a\uFEFFb".length()→ 返回3(含一个零宽非断空格)
集合不能用 length,数组不能用 size()
直接写 list.length 或 arr.size() 都会编译报错。因为:
立即学习“Java免费学习笔记(深入)”;
- 数组是 Java 的原生类型,不继承自任何类,没有
size()方法 - 集合是引用类型,属于
java.util包,没有length属性 -
Map虽然不属于Collection接口,但同样支持size(),表示键值对数量
常见误用与检查建议
写代码时容易混淆三者,尤其在类型转换或泛型推导场景下。可按以下方式快速确认:
- 看到方括号声明(
new int[5]、String[] a = {...})→ 用.length - 看到
String变量 → 用.length() - 看到
ArrayList、HashSet、HashMap等 → 用.size() - IDE 报红提示 “cannot resolve symbol” 时,先看变量声明类型,再匹配对应语法

















