Java 为什么使用值创建的数组必须是静态的才能在主目录中访问它?引用数组的优点是什么?

Java 为什么使用值创建的数组必须是静态的才能在主目录中访问它?引用数组的优点是什么?,java,Java,1.)我创建的第一个数组是名为locations的整数类型,其中包含值。为什么我要将其设置为静态,以便在主类中访问它 2.)第二个问题是,如果我不将使用引用在主类中创建的数组命名为类,则不会创建该数组。每次我使用带有引用的数组创建时,我都必须使用它的同一个类。为什么我需要一个与数组相同的类?在main?中创建的数组的默认类型是什么。带引用的数组,例如:main中的understand[]数组,如果创建了带引用的main,则不接受该数组。我可以创建一个引用数组而不包含它的类吗 3.)我可以直接给数

1.)我创建的第一个数组是名为locations的整数类型,其中包含值。为什么我要将其设置为静态,以便在主类中访问它

2.)第二个问题是,如果我不将使用引用在主类中创建的数组命名为类,则不会创建该数组。每次我使用带有引用的数组创建时,我都必须使用它的同一个类。为什么我需要一个与数组相同的类?在main?中创建的数组的默认类型是什么。带引用的数组,例如:main中的understand[]数组,如果创建了带引用的main,则不接受该数组。我可以创建一个引用数组而不包含它的类吗

3.)我可以直接给数组赋值,然后相应地使用它,而不是使用引用创建数组。为什么我需要数组引用

非常感谢您的关注。你对这件事的看法对我很有价值。当我的怀疑被Stack overflow的博学成员澄清时,这对我来说意义重大

   `

class under
    {

           static int[] locations ={2,3,4};//arrays declared with values in class under

    }
    class understand
    {
        String c;
        public static void main(String[] args)
        {

            under d=new under();
            System.out.println(under.locations[0]);

             understand[] u;//next array created created in the main class using //reference//
            u = new understand[2];
            u[0]=new understand();
            u[0].c="ab";
            System.out.println(u[0].c);


        }
    }` 
        I have the following questions in this code they are:
  • main()
    方法是静态的,您只能在静态上下文中运行静态代码

  • 很抱歉,你在第二点提出的大多数问题都没有意义

  • 您需要引用Java中的每个对象,因为没有引用的对象由垃圾收集器收集(从内存中永久删除)

  • 编辑:
    我再次尝试阅读第2点-仍然不明白…

    您不能对非静态字段进行静态引用

    与普通对象一样,数组也是通过引用访问的

  • 正如Lucas所写:您只能在静态上下文中运行静态代码
  • 在main中创建的数组并没有默认类型。参考其他问题:java中的数组定义如下:

    T id=新的T[初始大小]; T id=new T(){instanceofT_1,instanceofT_2}

  • 因此,在您的例子中,您没有使用与类相同的名称命名数组。您所做的是定义数组
    u
    ,类型为
    understand[]

  • 同样,正如Lucas所写:Java中的每个对象都不能没有引用而存在。Java编译器不允许您编写以下内容:

    新字符串[]{}

  • 它将报告一个错误“赋值的左侧必须是一个变量”。

    可能重复的
            enter code here