考虑:int[] myArray = new int[10];String myString = "hello world!";List<int> myList = new ArrayList<int>();myArray.length // Gives the length of the arraymyString.length() // Gives the length of the stringmyList.size() // Gives the length of the list字符串和数组很可能是在不同的时间设计的,因此最终使用了不同的约定。一个理由是,由于字符串内部使用数组length(),因此使用了方法来避免重复相同的信息。另一个是使用方法length()有助于强调字符串的不变性,即使数组的大小也是不可更改的。最终,这只是演变而来的不一致,如果从头开始重新设计该语言,那肯定会得到解决。据我所知,没有其他语言(C#,Python,Scala等)做同样的事情,因此这可能只是作为该语言一部分而出现的轻微缺陷。如果仍然使用错误的代码,则会出现错误。