august 发表于 2007-9-26 11:22:26

[java]报错问题

public class HelloWorld{
    int i;
    int[] arr=new int;
    arr=0;
    arr=1;
    HelloWorld(int x){
      i=x;
    }
   
    public static void main(String[] args){
      HelloWorld ob=new HelloWorld(5);
}


为什么会这样报错呢?错在哪里??

coolpay64 发表于 2007-9-26 12:26:41

某不懂Java,但對int[] arr=new int;這語法很懐疑。。。
可能 要寫成 arr[] = 0;

rednaxela 发表于 2007-9-26 19:40:49

这问题好解决,把arr = 0; arr = 1;写在一个static block里就行.
public class HelloWorld{

    int i;
    static int[] arr=new int;

    static {
      arr = 0;
      arr = 1;
    }
   
    HelloWorld(int x){
      i = x;
    }

    public static void main(String[] args){
      HelloWorld ob = new HelloWorld(5);
    }
}
这样在一个类内但不在任何方法内的static代码块叫做静态构造器,是在一个类初次被装载的时候执行的.如果一个类中包含有多个静态构造器,则按书写顺序执行.

构造器的执行顺序是:
   初始化(静态变量只执行一次,实例变量在构造实例时执行)
->静态构造器(只执行一次)
-> 实例构造器(实例构造的时候执行).

P.S. 不要用C++的语法去猜Java语句...

woshijhl 发表于 2007-10-14 05:31:24

楼上。。有问题啊!
这样我试了。还是有问题。
public class HelloWorld{

    int i;
    int[] arr;

    HelloWorld(int x){
      i = x;
      arr=new int;
      arr = 0;
      arr = 1;
    }

    public static void main(String[] args){
      HelloWorld ob = new HelloWorld(5);
    }
}

把构造放里面去。。这样就不会出问题了。

rednaxela 发表于 2007-10-14 21:03:57

嗯原先少打了个static.发帖前没先编译真罪过...= =

lw 发表于 2007-10-15 20:13:52

static {
      arr = 0;
      arr = 1;
    }
还有这种初始化啊? 真厉害

valleth 发表于 2007-11-6 16:36:59

static {
      arr = 0;
      arr = 1;
    }
完全没有问题, 问题出在 arr本身不是静态变量 不能够在静态块中初始化
页: [1]
查看完整版本: [java]报错问题