【问题标题】:Using arrays not attached to a variable [duplicate]使用未附加到变量的数组[重复]
【发布时间】:2026-01-26 21:15:01
【问题描述】:

有没有办法使用数组而不将其实际分配给变量?例如

for (int numb: {1,2,3,4,5,6}){
    System.out.println(number);
}

public class TestArrays{
   public static void doStuff(double[] doubles){
       //doStuff
   }
   public static void main(String[] args){
       doStuff({1,2,3,4,5,6,7});
   }
}

因为当我现在尝试它时,我遇到了编译问题,就好像编译器没有将实体识别为数组一样。

【问题讨论】:

  • 虽然我们可以在没有它的情况下进行诊断;一般来说,最好引用编译器实际打印的内容,而不是说“我遇到编译问题”,那里有有用的信息

标签: java arrays


【解决方案1】:

是的,像这样:

for (int number : new int[]{1, 2, 3, 4, 5, 6}) {
    System.out.println(number);
}

doStuff(new double[]{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0});

【讨论】:

    【解决方案2】:

    考虑使用varargs 来传递可变数量的参数

    public static void doStuff(double... doubles){
           //doStuff
    }
    

    然后打电话

    doStuff(1,2,3,4,5,6,7);
    

    您可以将Arrays.asList 的可变参数用于for 循环

    for (int number: Arrays.asList(1,2,3,4,5,6)) {
       System.out.println(number);
    }
    

    【讨论】:

      【解决方案3】:

      为了完整起见,此属性不仅限于原始数组。因为在 Java 中,数组也是对象,所以您可以对任何对象执行此操作。

      doStuff(new String("Dave"));
      doStuff(new Car("Ford"));
      

      这被称为匿名对象,有时会生成一些不错的代码,尽管滥用往往会导致代码非常难以阅读。明智地使用!

      【讨论】:

      • 我不喜欢“匿名对象”这个术语(据我所知,这不是一个官方术语)——它表明,否则,对象有名字......他们没有。 变量有名字;对象不会。
      • 耶稣,飞碟说话了。看来我要纠正一些大学讲师!
      【解决方案4】:

      试试

      new int[] {1,2,3,4,5,6,7}
      

      而不仅仅是

      {1,2,3,4,5,6,7}
      

      【讨论】: