【问题标题】:Java String array: is there a size of method?Java String 数组:有方法的大小吗?
【发布时间】:2010-10-29 14:44:26
【问题描述】:

我来自 php 背景,在 php 中有一个 array_size() 函数,它告诉你数组中有多少元素被使用。

String[] 数组是否有类似的方法?谢谢。

【问题讨论】:

  • 嘿,所有答案都在同一分钟内。
  • 啊,PHP 的全局命名空间杂乱无章。过去的美好时光......
  • 我认为他的意思是 php 的 count() 而不是 array_size()

标签: java arrays string


【解决方案1】:

是的,.length(类似于属性,不是方法):

String[] array = new String[10];
int size = array.length;

【讨论】:

  • 嗨,我们如何找到列出数组对象所有可能属性和函数的文档?我不是指 Arrays 对象,它是我能找到的唯一文档。
  • @GMsoF “[]”(数组,而不是数组对象)的文档实际上是 Java 规范。 .e.g docs.oracle.com/javase/specs/jls/se7/html/jls-10.html 编辑:啊...评论来自2013年...
【解决方案2】:
array.length

它实际上是数组的最终成员,而不是方法。

【讨论】:

  • IIRC,它实际上不是一个字段,它只是看起来像一个。
  • 哦,那是什么?一些特殊的 Array 东西?
  • 一个“伪字段”,它被编译成一个特殊的数组长度操作码,而不是字段访问操作码。
  • 它是一个字段,根据§10.7 (java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7):“公共最终字段长度,包含数组的组件数(长度可以是正数或零)。”
【解决方案3】:

另外,请注意,如果您有一个多维数组,您可以通过将“[0]”附加到您正在查询的数组中来获取相应的维度,直到您到达适当的轴/元组/维度。

下面的代码可能会更好地解释这一点:

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

产生输出:

5
12

【讨论】:

    【解决方案4】:

    array.length 最终属性

    它是公共的和最终的财产。它是最终的,因为 Java 中的数组在大小上是不可变的(但在元素的值上是可变的)

    【讨论】:

      【解决方案5】:

      数组是对象,它们有一个长度字段。

      String[] 哈哈 = {"olle", "bulle"};

      haha.length 将是 2

      【讨论】:

      • 只是吹毛求疵。但我相信数组不是 Java 中的对象——它们是两种引用类型的变量之一。另一个是对象。
      • @jabbie:真的吗?你有这方面的参考吗?我只是质疑它,因为你可以说 Object o = new String[] { "hello" };
      • simon 我认为该语句起作用的原因是因为它们为所有原始类型引入了自反类。
      • 阅读docs.oracle.com/javase/specs/jls/se8/html/jls-10.html 的第一句话,然后尝试告诉我们数组不是对象。 ;)
      • 你可以使用其他变量名,这让我分心
      【解决方案6】:

      在 java 中有一个 length 字段,您可以在任何数组上使用它来找出它的大小:

          String[] s = new String[10];
          System.out.println(s.length);
      

      【讨论】:

      • 感谢您没有深入了解它可能是什么或可能不是什么的技术细节,只是提供了一个简短而简洁的答案。为你+1。 :)
      【解决方案7】:

      如果你想要一个函数来做这个

      Object array = new String[10];
      int size = Array.getlength(array);
      

      如果你不知道你有什么类型的数组,这可能很有用,例如int[]、byte[] 或 Object[]。

      【讨论】:

        【解决方案8】:

        Stringarray 的长度有区别,澄清一下:

        int a[] = {1, 2, 3, 4};
        String s = "1234";
        
        a.length //gives the length of the array
        
        s.length() //gives the length of the string
        

        【讨论】:

        • 如果是澄清,应该在问题中更新。
        【解决方案9】:

        答案是“全部”。 java 数组分配有固定数量的元素槽。 “长度”属性会告诉你有多少。该数字在阵列的生命周期内是不可变的。对于可调整大小的等价物,您需要 java.util.List 类之一 - 您可以在其中使用 size() 方法找出正在使用的元素数量。

        但是,有“使用中”,然后有 使用中。在类对象数组中,您可以拥有元素为空对象的元素槽,因此即使它们计入长度属性,但大多数人的定义,它们并没有被使用(YMMV,取决于应用程序)。没有用于返回空/非空计数的内置函数。

        列表对象还有另一个“使用中”的定义。为了避免过度创建/破坏底层存储结构,这些类中通常有一些填充。它在内部使用,但不计入返回的 size() 方法。如果您尝试访问这些项目而不展开 List(通过 add 方法),您将获得非法索引异常。

        因此,对于列表,您可以将“In Use”用于非空、已提交元素、所有已提交元素(包括空元素)或所有元素,包括当前分配的扩展空间。

        【讨论】:

          【解决方案10】:

          以上所有答案都是正确的。需要注意的重要一点是数组具有长度属性,但没有长度方法。每当您在 java 中使用字符串和数组时,您可能面临的三个基本模型是:

          1. 字符串 s=new String("vidyasagar");
            System.out.println(s.length()); // 在这种情况下,我们只使用 细绳。字符串没有长度属性。我们必须使用长度() 方法。
          2. int[] s=新的int[10]; System.out.println(s.length); //在这里,我们 使用数组的长度属性。
          3. 字符串[] s=新字符串[10];
            System.out.println(s.length); // 这里即使数据类型是 字符串,它不是单个字符串。 s 是数组的引用 字符串。所以我们使用数组的长度属性来表达如何 许多字符串可以放入该数组中。

          【讨论】:

            【解决方案11】:

            并不是你问题的真正答案,但如果你想要一个可以增长和缩小的数组,你不应该在 java 中使用数组。最好使用ArrayList 或其他 List 实现。

            然后你可以调用它的 size() 来获取它的大小。

            【讨论】:

              猜你喜欢
              • 2011-03-03
              • 2010-10-30
              • 1970-01-01
              • 2012-06-29
              • 2022-01-23
              • 2011-03-03
              相关资源
              最近更新 更多