static final int[] a = new int[2]{100,200};是对是错呢~??

zhymin77 2009-04-23 11:30:06
看了道题,知道这是错的 ,but why~??
...全文
515 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecj6185 2009-06-15
  • 打赏
  • 举报
回复
学习了
xiang7fei 2009-06-14
  • 打赏
  • 举报
回复
有所了结了
hyhymn 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 scliuqiang 的回复:]
Java codeint[] a = new int[2]{100,200};
//不能这样写
要么int[] a = new int[]{100,200};
要么int[] a = new int[2]{};
如果这样int[] a = new int[2]{100,200};写
你给定了数组长度2,接着又初始化,虚拟机不能保证你初始化时给定的数据个数不会造成数组下标越界,
所以虚拟机不允许这样写--编译不通过
[/Quote]

是这样啊,学习。
scliuqiang 2009-06-08
  • 打赏
  • 举报
回复
int[] a = new int[2]{100,200};
//不能这样写
要么int[] a = new int[]{100,200};
要么int[] a = new int[2]{};
如果这样int[] a = new int[2]{100,200};写
你给定了数组长度2,接着又初始化,虚拟机不能保证你初始化时给定的数据个数不会造成数组下标越界,
所以虚拟机不允许这样写--编译不通过
guliputaoyou 2009-06-05
  • 打赏
  • 举报
回复
不应该写括号里的2啊~~长度已经由于在{}里的内容而默认为2了~~~
yxtnet 2009-05-20
  • 打赏
  • 举报
回复
1,4,7楼正解,本楼正解.
matrixlee 2009-05-20
  • 打赏
  • 举报
回复
A,B,C都可以编译和运行,结果也都正确阿
Coder211 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qybao 的回复:]
static final int[] a = new int[]{100,200}; //new int[]{}这样的形式不用设置[]里的数,数组长度由{}里的个数确定
[/Quote][Quote=引用 2 楼 yin_slin 的回复:]
错了么?没看出来,语法没有问题啊。估计你想表达的是:这种赋值不太好?

static final int[] a = new int[]{100,200};

static final int[] b = {100,200};

都可以的啊。
[/Quote]
1楼的解释是正确的,2楼的另外两种写法是正确的。
zhaodalong 2009-05-16
  • 打赏
  • 举报
回复
这种赋值方式是ok的。
warrson 2009-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhymin77 的回复:]
就是错了啊 SCJP考试题 给你看看原题吧
Question 12:
While two code fragments correctly create and initiaize a static array
of int elements ?(Choose two.)

A.static final int[] a = {100,200};

B.static final int[] a;
static {a=new int[2];a[0]=100;a[1]=200;}

C.static final int[] a = new int[2]{100,200};

D.static final int[] a;
static void init(){a=new int[3];a[0]=100;a[1]=20…
[/Quote]

老板,看清楚,lz写的和c选项不一样,没有在赋值时显式给定数组长度。 这种赋值方式是ok的。
dyflovexlp 2009-04-24
  • 打赏
  • 举报
回复
这样跟你说吧:
数组有两种初始化方式:
1 . 静态初始化 int[] a = new int[]{1,2} 有系统决定数组的长度
2 . 动态初始化 int[] a = new int[5]..系统自动赋初始值

详见:<<疯狂java讲义>>第四章数组
zhymin77 2009-04-24
  • 打赏
  • 举报
回复
就是错了啊 SCJP考试题 给你看看原题吧
Question 12:
While two code fragments correctly create and initiaize a static array
of int elements ?(Choose two.)

A.static final int[] a = {100,200};

B.static final int[] a;
static {a=new int[2];a[0]=100;a[1]=200;}

C.static final int[] a = new int[2]{100,200};

D.static final int[] a;
static void init(){a=new int[3];a[0]=100;a[1]=200;}

Answer:AB
密码测试 2009-04-24
  • 打赏
  • 举报
回复
错了么?没看出来,语法没有问题啊。估计你想表达的是:这种赋值不太好?

static final int[] a = new int[]{100,200};

static final int[] b = {100,200};

都可以的啊。
qybao 2009-04-23
  • 打赏
  • 举报
回复
static final int[] a = new int[]{100,200}; //new int[]{}这样的形式不用设置[]里的数,数组长度由{}里的个数确定

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧