黑马程序员技术交流社区

标题: 编译和运行下面代码后显示的结果是( )。 [打印本页]

作者: 郭炜    时间: 2012-3-14 11:43
标题: 编译和运行下面代码后显示的结果是( )。
编译和运行下面代码后显示的结果是(    )。
public class Inc{
public static void main(String argv[]){
                Inc inc = new Inc();
                int i =0;
                inc.fermin(i);
                i = i++;
                System.out.println(i);
        }
        void fermin(int i){
                i++;
        }
}
A、编译报错误
B、2
C、1
D、0

作者: 冯林    时间: 2012-3-14 11:51
D、0
{:soso_e112:}
作者: djx900    时间: 2012-3-14 11:56
为什么是0啊
作者: 于紫洋    时间: 2012-3-14 13:06
我想说这位童鞋,没必要这么着急把技术分弄满,视频还是要看完的,日志还是要写够的
作者: 吴璞玉    时间: 2012-3-14 13:37
int i =0; //声明一个变量i=0
inc.fermin(i);//将i的值作为参数传递给fermin方法,但是i的值本身并没有改变
i = i++;//这时i的值依旧是0,这句话是将i自增,但是它是先调用i的值,然后自增

作者: 程洪    时间: 2012-3-14 13:47
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTA2NXxhZWRiY2E0ZjkyZDcwNzY0ZmVmZjViNTRhNDQxZTEzOXwxNzYzODYxODQ2&request=yes&_f=.jpg

未命名.jpg (30.2 KB, 下载次数: 136)

未命名.jpg

作者: 泮和顺    时间: 2012-3-14 14:30
我选了=1.....错在了那个++ 晕死
第一个是传形参方法所以改变不了值
第二个那个有点绕 看例子
           int i =0;
                int x= i++;
                System.out.println(i);//1
                System.out.println(x);//0
            (i=i)++感觉是赋值完了就结束了 ?
           但是i=(i++) 也是0...所以i=i++是无效操作 i还是i...
作者: 于紫洋    时间: 2012-3-14 14:42
原来是先赋值后自增啊,而且赋值和 i 在一条语句,所以 i 值根本没变,
果然大家解释以后好理解多了
如果只有一句 i++;输出就是1了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2