我写了一个类并在类中声明了一个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!";
}
}
答案 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教程。