Java面试 笔试题之i++问题

本文通过分析Java代码示例,探讨了自增运算符的使用和其在不同语言中的行为差异,包括i=i++和++i的区别。在Java中,i=i++会先赋值后自增,而++i则是先自增后赋值。通过多个例子,解释了这些运算在实际编程中需要注意的细节和可能导致的误解。
摘要由CSDN通过智能技术生成

注:以下代码除特殊说明外,均使用Java语言编写,编译器为eclipse,jdk版本为1.8

1.下面程序的输出结果是()

public void test1() {
        int j=0;
        for(int i=0;i<100;i++) {
            j=j++;
        }
        System.out.println("j="+j);
    }

A.0 B.99 C.100 D.101

所以结果是j=0.
答案:A

再来看第二道选择题

2.以下代码的执行结果是多少?

public void test2() {
        int i=0;
        i=i++ + ++i;
        System.out.println("i="+i);
    }

刚刚做完第一题,可能有的同学认为答案是1,因为Java使用中间缓存变量的机制呀。别着急,我们来仔细分析一下这道题

所以说,执行到i++时,i的值并不是立即进行自加1的,Java虚拟机会先将i++操作压入栈,执行下一个操作(可以是赋值操作也可以是运算等其他操作),再将i++操作从栈弹出执行,所以
答案是:i=2

3.以下代码的执行结果是多少?

public void test5() {
        int j=0;
        j = ++j + j++ + j++ + j++;
        System.out.println("i="+j);
    }

这道题,相信很多同学都会做了,我们来看解析

所以答案是:i=7

最后来看一道综合题
4.下面代码块1中的横线填入**__**可使输出的值与代码块2的输出值相同?
A.i B.i++ C.++i D.不加任何值

//代码块1:Java
public void test4() {
        int i=0;
        i=i++ + __;
        System.out.println("i="+i);
    }

/*代码块2:C语言*/
#include<stdio.h>
main()
{
int i=0;
i=i++;
printf("i=%d/n",i);
}

答案是:A或B
要做对这道题,首先要明白i=i++操作在C语言里的结果是多少,是0,等效于:i=i,i++。最后输出的是自加1的结果也就是输出i=1(不采用中间缓存变量的机制)
所以在java中使用i++的时候尤其要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值