key 发表于 17-7-2009 00:46:03

Java for()语法的一个有趣的东西

请判断下面的语句是否正确:
一:int x = 1;
for(int x = 0; x<100; x++)
{
//do nothing
}二:for(int x=0;x<100;x++)
{
//do nothing
}
int x = 10;

coredump 发表于 17-7-2009 12:22:06

我猜一下:都对,如果我猜错了那就是第二个对

清风不写字 发表于 17-7-2009 12:30:08

第一个相当于int x = 0;
{
    int x =0;
}第二个相当于{
    int x =0;
}
int x = 0;

[ 本帖最后由 清风不写字 于 17-7-2009 11:32 编辑 ]

sliuhao 发表于 17-7-2009 12:31:39

LZ有学过编译么?

stellahie 发表于 17-7-2009 12:36:25

我也觉得都对。:yct_45

For loop里头的 x 和外头的 x 没有关系吧?还是我对楼主的题目理解错误?

唉。我路过而已。:mk_11

[ 本帖最后由 stellahie 于 17-7-2009 12:03 编辑 ]

MacroJ 发表于 17-7-2009 12:51:44

路过而已:o :o

hoopoos 发表于 17-7-2009 12:59:52

一不对,二对

int x = 1;
for(int x = 0; x<100; x++)
{
x=0; <---- 这个x到底是算外面的还是里面的?
}

编译器认为x是ambiguous的,所以不通过

suntest001 发表于 17-7-2009 13:08:57

一是错的
x已经作为本地变量定义过了,不能再定义一次。如果去掉for里面那个int就可以了。

二是对的

貌似SCJP当年经常忽悠这种题。

蒙面超人 发表于 17-7-2009 14:01:02

我只知道C里面怎么样都对

key 发表于 17-7-2009 17:19:01

原帖由 清风不写字 于 17-7-2009 11:30 发表 http://www.freeoz.org/forum/images/common/back.gif
第一个相当于int x = 0;
{
    int x =0;
}第二个相当于{
    int x =0;
}
int x = 0;

谢谢。
主要是因为在C/C++中,语言单位有严格的scope限制。
int x;
{
int x;
}
是互不冲突的。但在Java里,这个就冲突了。

key 发表于 17-7-2009 17:20:46

原帖由 coredump 于 17-7-2009 11:22 发表 http://www.freeoz.org/forum/images/common/back.gif
我猜一下:都对,如果我猜错了那就是第二个对

一看就知道是 C/C++ 程序员,哈哈哈
因为C/C++是以{}为scope的,而Java似乎不吃这一套。
页: [1]
查看完整版本: Java for()语法的一个有趣的东西