我怎样才能得到一个数组,一个集合,或在Java中的string的大小?
有什么不同的方式可以访问数组的长度,集合( List , Set等)和String对象? 为什么不一样? 
简略:
 对于一个数组:使用.length 。 
 对于Collection (或Map ):使用.size() 。 
 对于CharSequence (包括CharBuffer , Segment , String , StringBuffer和StringBuilder ):使用.length() 。 
数组
 可以使用数组的.length属性来访问它。 尽pipe数组是一个dynamic创build的Object ,但length属性的任务是由Java语言规范第10.3节定义的: 
数组由数组创buildexpression式(第15.10节)或数组初始化器(第10.6节)创build 。
数组创buildexpression式指定元素types,嵌套数组的级数以及至less一个嵌套级别的数组长度。 数组的长度可用作最终实例variables
length。数组初始化器创build一个数组并为其所有组件提供初始值。
 由于在创build新的数组实例的情况下,数组的长度不能改变,所以.length重复访问将不会改变该值 ,而不pipe数组实例做了什么(除非它的引用被replace为不同大小的数组)。 
作为一个例子,为了得到一个声明的一维数组的长度,可以这样写:
 double[] testScores = new double[] {100.0, 97.3, 88.3, 79.9}; System.out.println(testScores.length); // prints 4 
为了在n维数组中获得长度,需要记住他们一次访问数组的一个维度。
这是一个二维数组的例子。
 int[][] matrix = new int[][] { {1, 2, 3, 4}, {-1, 2, -3, 4}, {1, -2, 3, -4} }; System.out.println(matrix.length); // prints 3 (row length or the length of the array that holds the other arrays) System.out.println(matrix[0].length); // prints 4 (column length or the length of the array at the index 0) 
这对使用很重要,特别是在锯齿状arrays的情况下。 列或行可能并不总是排队。
 集合( Set , List等) 
 对于实现Collection接口的每个对象,它们都会有一个名为size()的方法来访问集合的整体大小。 
 与数组不同,集合不是固定的长度 ,并且可以随时添加或删除元素。 调用size()会产生一个非零的结果,当且仅当有任何东西添加到列表本身。 
例:
 List<String> shoppingList = new ArrayList<>(); shoppingList.add("Eggs"); System.out.println(shoppingList.size()); // prints 1 
 某些集合可能会拒绝添加元素,或者是因为它是null ,或者是重复的(在Set的情况下)。 在这种情况下,重复添加集合不会导致大小增加。 
例:
 Set<String> uniqueShoppingList = new HashSet<>(); uniqueShoppingList.add("Milk"); System.out.println(uniqueShoppingList.size()); // prints 1 uniqueShoppingList.add("Milk"); System.out.println(uniqueShoppingList.size()); // prints 1 
 访问List<List<Object>> *的大小的方式与锯齿形数组类似: 
 List<List<Integer>> oddCollection = new ArrayList<>(); List<Integer> numbers = new ArrayList<Integer>() {{ add(1); add(2); add(3); }}; oddCollection.add(numbers); System.out.println(oddCollection.size()); // prints 1 System.out.println(oddCollection.get(0).size()); // prints 3 
  *: Collection没有在其接口中定义的get方法。 
 顺便说一下, Map不是一个Collection ,但它也有一个size()方法定义。 这只是返回包含在Map的键值对的数量。 
 String 
 一个String有一个定义的方法length() 。 它所做的是打印该String实例中存在的字符数。 
例:
 System.out.println("alphabet".length()); // prints 8