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; 我猜一下:都对,如果我猜错了那就是第二个对 第一个相当于int x = 0;
{
int x =0;
}第二个相当于{
int x =0;
}
int x = 0;
[ 本帖最后由 清风不写字 于 17-7-2009 11:32 编辑 ] LZ有学过编译么? 我也觉得都对。:yct_45
For loop里头的 x 和外头的 x 没有关系吧?还是我对楼主的题目理解错误?
唉。我路过而已。:mk_11
[ 本帖最后由 stellahie 于 17-7-2009 12:03 编辑 ] 路过而已:o :o 一不对,二对
int x = 1;
for(int x = 0; x<100; x++)
{
x=0; <---- 这个x到底是算外面的还是里面的?
}
编译器认为x是ambiguous的,所以不通过 一是错的
x已经作为本地变量定义过了,不能再定义一次。如果去掉for里面那个int就可以了。
二是对的
貌似SCJP当年经常忽悠这种题。 我只知道C里面怎么样都对 原帖由 清风不写字 于 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里,这个就冲突了。 原帖由 coredump 于 17-7-2009 11:22 发表 http://www.freeoz.org/forum/images/common/back.gif
我猜一下:都对,如果我猜错了那就是第二个对
一看就知道是 C/C++ 程序员,哈哈哈
因为C/C++是以{}为scope的,而Java似乎不吃这一套。
页:
[1]