当前位置: 首页 > 知识库问答 >
问题:

为什么不能在java中的方法之外声明和初始化数组?

常心水
2023-03-14

当我在java中在方法之外的单独行上声明和构造一个数组时,我感到困惑,因此它将是一个实例变量,我得到一个编译错误,然而当我在一行上构造和初始化时,它是好的,为什么会发生这种情况?

public class HelloWorld {

//This works fine
int anArray [] = new int[5];

//this doesn't compile "syntax error on token ";", , expected"
int[] jumper;
jumper = new int[5];

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


void doStuff() {

    //this works fine
    int[] jumper;
    jumper = new int[5];
}

}

共有3个答案

贺宏逸
2023-03-14

不能在方法之外运行命令。除了在变量声明时赋值(除了初始化程序块之类的som情况)。

您可以在声明期间初始化变量:

私有int[]数字=新int[5];

可以在构造函数中初始化

class MyClass {
   private int[] numbers;

   public MyClass() {
      numbers = new int[5];
   }


}

或者在初始化块中初始化它

private int numbers[5];

{
      numbers = new int[5];
}
欧阳睿范
2023-03-14

一个小的语法更改将修复编译器错误:

int[] jumper;
{
   jumper = new int[5];
}
孙德本
2023-03-14
jumper = new int[5];

是一条语句,必须出现在方法、构造函数或初始化块中。

我想你知道,你可以这样做:

int[] jumper = new int[5];

因为你可以在变量声明中赋值。

 类似资料:
  • 问题内容: 我可以写: 我也可以写: 但我不能写: 为什么这会被Java阻止? 我知道如何解决它,但有时会更简单。 例如: 自从我学会了如何在Java中玩数组以来,这个简单的问题一直困扰着我。 问题答案: 为什么这会被Java阻止? 你必须询问Java设计人员。该限制可能有一些微妙的语法原因。请注意,某些数组创建/初始化结构不在Java 1.0中,而(IIRC)是在Java 1.1中添加的。 但是

  • 问题内容: 如何在Java中声明和初始化数组? 问题答案: 你可以使用数组声明或数组文字(但只有当你立即声明并影响变量时,数组文字才能用于重新分配数组)。 对于原始类型: 例如,对于类,String是相同的: 当你首先声明数组然后对其进行初始化时,第三种初始化方法很有用。

  • 如何在Java中声明和初始化数组?

  • 7.1.1 概念 数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。数组的编译时值初始化是按照数组顺序完成的(如下)。 注意事项 如果我们想让数组元素类型为任意类型的话

  • 问题内容: 我对Java开关有一个疯狂的问题。 方案1-当为2时,它成功地将值打印为2。 方案2-当我要在其中注释时,saying地说 “本地变量值可能尚未初始化” 。 问题: 场景1:如果执行流程没有转到(当时),那么它如何知道value变量的类型为? 方案2:如果编译器将value变量的类型识别为,则它必须已访问。(声明和初始化)中的表达式。那为什么它会吱吱作响?当我要发表评论时,说 本地变量

  • 8.1.1 概念 map 是引用类型,可以使用如下声明: var map1 map[keytype]valuetype var map1 map[string]int ([keytype] 和 valuetype 之间允许有空格,但是 gofmt 移除了空格) 在声明的时候不需要知道 map 的长度,map 是可以动态增长的。 未初始化的 map 的值是 nil。 key 可以是任意可以用 ==