关于java:为什么我不能写一个静态字符串?

Why can't I write a static string?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;

public class HelloWorld{

   public static void main(String []args){
       static String[] str={"one","two"};
       Date date =new Date();
       Calendar cal = Calendar.getInstance();
       String year ="2018";
       String month ="4";
       int day =10;

       cal.set(Integer.parseInt(year),Integer.parseInt(month),day);
       System.out.println(cal.get(Calendar.DAY_OF_WEEK));
       // etc.
    }
}

错误信息:

error: illegal start of expression

static String[] str={"one","two"};


这是无效的语法。不能将static修饰符应用于局部变量。拆下static

如果str是一个类变量,那么在方法之外声明它:

1
2
public class HelloWorld{
    static String[] str={"one","two"};

静态是类型(接口、类、枚举…)成员的概念。在本例中,它允许您仅使用类名引用变量(HelloWorld.str)。当变量与方法体一样属于局部范围时,不能将其声明为静态变量,因为它不是类的成员。


有几种变量:

  • 类中的成员变量称为字段。
  • 方法或代码块中的变量称为局部变量。
  • 方法声明中的变量称为参数。

局部变量不能是static,只有字段可以是static。静态字段不属于任何实例,它们属于类。

在这种情况下,可以将String[] str设置为类成员:

1
2
3
4
5
static String[] str={"one","two"};

public static void main(String []args){
    // use str
}


类可以有静态成员,但方法不能有静态变量。

您可以将您的static String[] str={"one","two"};移动到您对main(..)的声明之上,这将把它移动到类的作用域中。


静态成员是类的一部分。不能在方法内声明静态变量。

应该是这样的

地狱世界类{静态字符串[]A="A","B"

公共静态void main(字符串参数){

}