幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3024|回复: 6

[java]报错问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-9-26 11:22:26 | 显示全部楼层 |阅读模式
public class HelloWorld{
    int i;
    int[] arr=new int[20];
    arr[0]=0;
    arr[1]=1;
    HelloWorld(int x){
        i=x;
    }
   
    public static void main(String[] args){
        HelloWorld ob=new HelloWorld(5);
}


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-26 12:26:41 | 显示全部楼层
某不懂Java,但對int[] arr=new int[20];這語法很懐疑。。。
可能 要寫成 arr[][0] = 0;

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-9-26 19:40:49 | 显示全部楼层
这问题好解决,把arr[0] = 0; arr[1] = 1;写在一个static block里就行.
  1. public class HelloWorld{
  2.     int i;
  3.     static int[] arr=new int[20];
  4.     static {
  5.         arr[0] = 0;
  6.         arr[1] = 1;
  7.     }
  8.    
  9.     HelloWorld(int x){
  10.         i = x;
  11.     }
  12.     public static void main(String[] args){
  13.         HelloWorld ob = new HelloWorld(5);
  14.     }
  15. }
复制代码
这样在一个类内但不在任何方法内的static代码块叫做静态构造器,是在一个类初次被装载的时候执行的.如果一个类中包含有多个静态构造器,则按书写顺序执行.

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

P.S. 不要用C++的语法去猜Java语句...
回复 支持 反对

使用道具 举报

11

主题

17

帖子

1331

积分

⑥精研

积分
1331
发表于 2007-10-14 05:31:24 | 显示全部楼层
楼上。。有问题啊!
这样我试了。还是有问题。
public class HelloWorld{

    int i;
    int[] arr;

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

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

把构造放里面去。。这样就不会出问题了。
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-10-14 21:03:57 | 显示全部楼层
嗯原先少打了个static.发帖前没先编译真罪过...= =
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-10-15 20:13:52 | 显示全部楼层
static {
        arr[0] = 0;
        arr[1] = 1;
    }
还有这种初始化啊? 真厉害
Style-C
回复 支持 反对

使用道具 举报

0

主题

7

帖子

79

积分

②入门

积分
79
发表于 2007-11-6 16:36:59 | 显示全部楼层
static {
        arr[0] = 0;
        arr[1] = 1;
    }
完全没有问题, 问题出在 arr本身不是静态变量 不能够在静态块中初始化
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-20 13:12 , Processed in 0.033892 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表