面试题一

package com.foreign;
public class Inc { 
     public static void main(String[] args) { 
        Inc inc =  new Inc(); 
        int i = 0; 
        inc.fermin(i); 
        i= i ++; 
        System.out.println(i);
    
    
     void fermin(int i){ 
        i++; 
    
}
 
sout 输出是多少?
---------------------------------------------------------------------------------摘自牛客网------------------------------------------------------------------------------
i++      先赋值在计算结果;
++i      先计算结果再赋值。
int i = 0;  
       i = i ++;  // 左边这个i其实是障眼法,就是一个中间变量,可以和下行的i合并;
       System.out.println(i);   这里等价于:
   int i = 0;
         System.out.println(i++);   这下再看,先赋值(先将i传给println函数打印出来,在计算表达式结果)
所以打印出来的是0,实际上整个表达式的结果已经是1了,只是没有打印出整个表达式的结果。
所以我们知道如下结论:
1、无论怎么变,i++和++i的整个表达式的结果都是1.
2、有时我们打印的是 表达式的结果(System.out.println(++i)),
      有时我们打印的只是一个 中间变量(System.out.println(i++))。
Ps:
int i = 0;  
i++;
System.out.println(i);  //值为1    打印的是表达式的结果

int i = 0;  
++i;
System.out.println(i);  //值为1     打印的是表达式的结果 

int i = 0;  
i = i++;
System.out.println(i);  //值为0      打印的是中间变量(JVM中间缓存变量机制)

int i = 0;  
i = ++i;
System.out.println(i);  //值为1    打印的是表达式的结果

转载于:https://www.cnblogs.com/fangke/p/9317235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值