zoukankan      html  css  js  c++  java
  • i++和++i

    今天做了一道题,代码如下:

    packagealgorithms.com.guan.javajicu;
    public class Inc {
    public staticvoid main(String[] args) {
    Incinc = newInc();
    inti = 0;
    inc.fermin(i);
    i=i ++;
    System.out.println(i);

    }
    void fermin(inti){
    i++;
    }
    }

    要求输出的是什么?这里楼主做错了- -羞耻,因此今天围绕这道题来讲一讲。

    首先这道题有两个陷阱。第一,java是属于值传递的,代码中的i属于基本数据类型,因此方法中的i只是外面i的一个副本,对它操作并不会对外面的i的值带来变化;其次,就是罪恶之源i=i++了,这里楼主刚开始并没有想太多,直接写了输出1,看了答案瞬间才反应过来= =。i++和++i不同,前者是先把当前i拿出来赋值给声明的变量i=i,然后再i+1,加1之后并没有赋值操作,也就是说前面这道题i输出还是等于0;后者是先i=i+1,然后再赋值给声明的变量i=i,如果这道题改成i=++i,那么输出就是1了。

    以上就是今天的小知识点,最后想对大家说,做题一定要思考一会- -,别以为很简单,有时候会有双重陷阱甚至更多,因此,做题需谨慎- -。

    Add:1.以下这道题输出什么呢?

    int a = 0;

    for(int i = 0;i<99;i++){

      a = a++;

    }

    System.out.println(a);

    2.以下这道题又输出什么呢= =?

    Integer a = 0;

    int b = 0;

    for(int i = 0;i<99;i++){

     a = a++;

    b = a++;

    }

    System.out.println(a);

    System.out.println(b);

    知道的朋友在评论里说出来吧,并说明为什么哦。

  • 相关阅读:
    4.net基础之委托事件
    2.net基础之反射
    绕过百度网盘速度限制直接下载百度网盘文件
    1.net基础之泛型
    网页图片按需加载
    小米官网图片轮播
    html+css3实现网页时钟
    接口自动化测试方案详解
    接口测试用例设计实践总结
    Mysql 高可用(MHA)-读写分离(Atlas)
  • 原文地址:https://www.cnblogs.com/wujianwu/p/11083498.html
Copyright © 2011-2022 走看看