java中数组用length属性(不带括号)获取长度,集合用size()方法;二者类型不同、语义不同、不可互换,混淆会导致编译错误。

Java 中没有 size 这个属性或方法用于数组,数组只用 length(不带括号)获取长度;size() 是集合(如 ArrayList、HashSet)的方法,和数组无关。混淆两者会导致编译错误。
数组只能用 length 属性,不是方法
数组是 Java 中的特殊对象,它有一个 public final int 类型的字段叫 length,直接访问即可,不加括号:
int[] arr = {1, 2, 3}; System.out.println(arr.length); // 输出 3String[] names = {"Alice", "Bob"}; System.out.println(names.length); // 输出 2- 写成
arr.size()或arr.length()都会报错:前者提示 “cannot resolve method size()”,后者提示 “cannot resolve symbol length()”
size() 只属于集合类,和数组完全无关
size() 是 Collection 接口定义的方法,所有实现类(ArrayList、LinkedList、HashSet、HashMap 等)都提供该方法,返回当前实际元素个数:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
List<string> list = new ArrayList(); list.add("x"); System.out.println(list.size()); // 输出 1</string>Map<string integer> map = new HashMap(); map.put("a", 1); System.out.println(map.size()); // 输出 1(键值对数量)</string>- 数组不能调用
size(),哪怕把它放进集合里也不改变这个事实 —— 比如List<int> lists = new ArrayList(); lists.add(new int[5]);</int>,此时lists.size()是 1(集合里有 1 个数组),而那个数组本身的长度仍是lists.get(0).length
别被名字误导:length 和 size() 语义不同
虽然都表示“有多少个”,但底层逻辑和使用场景完全不同:
-
length是编译期确定的固定值,数组创建后不可变,访问是零开销的字段读取 -
size()是运行时计算的动态值,反映当前集合状态,增删元素后会变化 - 数组不是集合,不实现
Collection接口,所以没有size();集合也不是数组,没有length字段
嵌套结构要逐层判断类型
当面对类似 List<string></string> 或 String[][] 这样的结构时,必须分清每一层是什么类型:
-
List<string> data = new ArrayList(); data.add(new String[]{"a","b"});</string>
→data.size()是列表中数组的个数(这里是 1)
→data.get(0).length是第一个数组的长度(这里是 2) -
String[][] grid = {{"x","y"},{"m","n","o"}};
→grid.length是外层数组长度(2)
→grid[0].length是第一行长度(2),grid[1].length是第二行长度(3)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










