main方法中不能声明方法吗?

时间:2011-09-19 11:29:48

标签: java

我写了这个类(打印数组列表),在其中我在main函数中创建了一个方法..

嗯它不起作用:我创建了函数static并在main方法中声明了它,但它仍然没有用。在main方法中,我使用了一个没有访问说明符的函数:它仍然不起作用。

你不能在main方法中声明一个方法吗?

有没有办法在main方法中声明一个方法(除了在main方法之外使其公共静态)?

public class TestArrays {


    public static void main(String[] args) {
    // Step 1 & 2: declare/initialize array variables
    int[]  array1 = { 2, 3, 5, 7, 11, 13, 17, 19 };
    int[]  array2;

    // Step 3: display array1 with initial values
        System.out.print("array1 is ");
    printArray(array1);
    System.out.println();

    // Step 4: make array2 refer to array1
    array2 = array1;
    // modify array2
    array2[0] = 0;
    array2[2] = 2;
    array2[4] = 4;
    array2[6] = 6;
    // print array 1
    System.out.print("array1 is ");
    printArray(array1);
    System.out.println();


     static void printArray(int[] array) {
    System.out.print('<');
    for (int i:array ) {
      // print an element
      System.out.print(i);
      // print a comma delimiter if not the last element

      }
       System.out.print('>');
    }
  }

4 个答案:

答案 0 :(得分:10)

不,你不能(直接 * )在Java中的其他方法中定义方法(main方法在这里不是特例)。

想要做的是将方法放在与main相同的中。如果main需要在不创建类实例的情况下调用它,那么它必须是static,但不一定是public

*但是,您可以使用其他方法中的方法声明匿名内部类。

答案 1 :(得分:0)

你不能在java中这样做。 java使用类,它们封装了所有内容,甚至是主方法 - 你将方法放在类中。

答案 2 :(得分:0)

我认为试试这个代码。它可能有用。

package practice;

class MyThreads extends Thread 

{
    MyThreads() 
    {
        System.out.print(" MyThreads");
    }
    public void run() 
    {
        System.out.print(" bar");
    }
    public void run(String s) 
    {
        System.out.println(" baz");
    }
}
public class TestThread 
{
    public static void main (String [] args) 
    {
        Thread t = new MyThreads() 
        {
            public void run() 
            {
                System.out.println(" foo");
            }
        };
        t.start();
        System.out.println("out of run");
    }
}

答案 3 :(得分:0)

方法/块中定义的任何功能都无法在其外部访问。

因为,正如我们所知,该特征的范围在块/方法的末尾结束。

所以没有外部(方法之外)使用它。

例如:

class Demo

{

       public static void main(String args[])

       {

       for(int i=0;i<10;i++) //for block

       {

           //.....

       }

       //outside of for loop

       System.out.println(i); // i can't be find symbol

       int sum()

       {

           int k=5;

       }

       //outside of sum()

       System.out.println(k); //won't get it.
   }

}

我认为这是正确的。否则纠正我。