为什么我不能写一个静态字符串?

时间:2018-05-08 11:52:44

标签: java

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.
    }
}

错误讯息:

  

错误:非法开始表达

     

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

4 个答案:

答案 0 :(得分:6)

这是无效的语法。您不会将static修饰符应用于局部变量。删除static

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

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

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

答案 1 :(得分:0)

一个类可以有静态成员,但是一个方法不能包含静态变量。

您可以将static String[] str={"one","two"};移到main(..)的声明之上,这会将其移到类的范围内。

答案 2 :(得分:0)

有几种变量:

  • 类中的成员变量 - 这些变量称为 fields
  • 方法或代码块中的变量 - 这些变量称为局部变量
  • 方法声明中的变量 - 这些变量称为参数

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

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

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

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

答案 3 :(得分:-1)

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

应该是这样的

Class Helloworld { static String [] a = {“a”,“b”};

public static void main(String args){

}