关于在java中填充String []

时间:2014-01-02 18:24:50

标签: java arrays string

我写了一个类并在类中声明了一个String [5];然后我试着在没有方法的情况下直接在类体中为这个数组赋值。我有很多错误。然后我尝试定义一个稍后调用的方法来填充这个数组。这次没有错误。我不明白为什么我不能直接在类体中赋值,如下所示:aString [0] =“today”。 Java新手。我知道我错过了一些重要的概念。我试图谷歌,但没有找到答案。请帮我解释一下。

这不起作用:

//: com/instar/Test1.java;
//defining String[];
package com.instar;
public class Test1{
    private static String[] bString = new String[5];
    bString[0] = "Today";
    bString[0] = "Today";
    bString[2] = " snowing";
    bString[3] = " and";
    bString[4] = "cold!";
    }
}

这有效:

//: com/instar/Test1.java;
//defining String[];
package com.instar;
public class Test1{
    private static String[] aString = new String[5];
    private static String[] bString = new String[5];
    public void populateArray(){
        bString[0] = "Today";
        bString[0] = "Today";
        bString[2] = " snowing";
        bString[3] = " and";
        bString[4] = "cold!";
    }
}

4 个答案:

答案 0 :(得分:6)

您可能需要静态初始化程序。

这应该有效:

//: com/instar/Test1.java;
//defining String[];
package com.instar;
public class Test1{
    private static String[] bString = new String[5];
    static {
      bString[0] = "Today";
      bString[2] = " snowing";
      bString[3] = " and";
      bString[4] = "cold!";
    }
}

或者,试试这个:

private static String[] bString = new String[]{"Today", " snowing", " and", "cold!"};

答案 1 :(得分:1)

在方法,构造函数或初始化程序块之外,不能有类似的语句。

答案 2 :(得分:1)

在方法或构造函数之外不允许赋值,就像你不能在方法/构造函数之外调用System.out.println("")一样。 (不完全确定原因,但我知道你不能。)

但是,您的问题有一个解决方案。我假设你想要静态地完成变量的赋值,以便排除将赋值放在构造函数中。你可以做两件事:

首先,(可能是最简单的),您可以使用所谓的数组常量。这些允许您在声明数组时设置数组的值。 (但是当你宣布它们时,。)看起来像这样:

public static String[] bString = {"Today", "Today", " snowing", " and", "cold!"};

您不需要指定数组的大小,因为它是由数组常量中包含的元素数量推断的。

其次,您可以声明一个静态方法为您执行此操作,这允许您使用赋值,(因为它们 允许在方法内部。)这将是这样的:

public static String[] getMyStringArray() {
    static String[] bString = new String[5];
    bString[0] = "Today";
    bString[1] = "Today";
    bString[2] = " snowing";
    bString[3] = " and";
    bString[4] = "cold!";
    return bString;
}

我个人会使用第一个,因为在我看来它更简单,更清洁。

答案 3 :(得分:0)

  

我不明白为什么我不能直接在课堂上分配价值

您可以在声明中使用正确的语法。

private static String[] bString = new String[] 
{
    "Today",
    "Today",
    " snowing",
    " and",
    "cold!"
}

允许您在声明时为数组赋值。但是通常,您应该在构造函数中执行这些操作。也许你应该阅读一下java教程。