当前位置:  技术问答>java相关

为什么是0?实在不明!

    来源: 互联网  发布时间:2015-05-18

    本文导语:  public class Test{   public static void main(String[] args){     int i = 0;     i+=i++; //i=i++;     System.out.println(i);  //0?!!   } } | 当然是0了,i+=i++  i=i+i++ ,i一开始为0,运算后此时i也为0,如...

public class Test{
  public static void main(String[] args){
    int i = 0;
    i+=i++; //i=i++;
    System.out.println(i);  //0?!!
  }
}

|
当然是0了,i+=i++  i=i+i++ ,i一开始为0,运算后此时i也为0,如果后面再有关于i的运算,i就会变为1,但是这个语句后没有这样的运算,只有 System.out.println(i);  所以i为0了!

|
i+=++i 时i为1

|
i++是先运算在使i+1;而++i是先使i+1在运算。
你System.out.println(i)实际上是显示了0(没有运算前i的状态)。
你要使他显示1只要吧i+=i++改成i+=++i就行了。
这是计算机的编程的基本知识阿。你要好好补补课了。
:)祝你进步

|
public class Test{
  public static void main(String[] args){
    int i = 0;
    i+=i++; //i=i++; 

/* 如果这儿是 j+=i++ , 那么在该步骤完成后i已经是1了,而j为0。但在本步骤中该算式右边的结果仍旧是0,你把0赋值给i,最后i当然就等于0了。

    System.out.println(i);  //0?!!
  }
}


|
public class Test{
  public static void main(String[] args){
    int i = 0;
    i+=i++; //i=i++; 

}
i+=i++  i=i+i++;
i++与++i的区别是 i++先使用i的值,再使i加1,而++i,是先给i加1,在使用i值。

i=i+i++ i=0+0(此时由于i++运算,i=1,但随后i又被重新付值 i=0)
如果这儿是 j+=i++ , 那么在该步骤完成后i已经是1了,而j为0.

|
Java里的i++和c中的不一样!Java要到这次的操作完全结束才行。

|
因为i++执行在赋值语句之后

|
Java里的i++和c中的不一样?为什麽?都是先执行运算i 操作,然后i 值才进行加1操作。

|
这个问题不是解决了的吗? 

看这个Java的字节码就知道了,就是楼顶的那个程序

Compiled from Test.java
public class Test extends java.lang.Object {
    public Test();
    public static void main(java.lang.String[]);
}

Method Test()
   0 aload_0
   1 invokespecial #1 
   4 return

Method void main(java.lang.String[])
   0 iconst_0
   1 istore_1
   2 iload_1
   3 iload_1
   4 iinc 1 1
   7 iadd
   8 istore_1
   9 getstatic #2 
  12 iload_1
  13 invokevirtual #3 
  16 return

|
我是这样认为的:通常的循环我们这样写
for(int i=0;i

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 有几个Key Term关键术语不明请指教!
  • 请教关于javabean中package的几个不明之处?
  • 我df查看的时候有一事不明
  • linux下安装WU-FTPD 2.6.2出现不明问题,高人帮忙啊
  • 初学makefile,有一点不明,望指点
  • 不明进程求解!
  • 想不明的问题,请高手指教!!
  • 新手入门,N个问题不明不会,版主help!!搞了二个多小时还是不行呀!!在线等!!
  • 这里有一段将本地字符变为unicode的方法,但我有几点不明请指点一下!
  • 不明了的问题???????求救
  • $$请问:在unix里面用make编译得时候,得出提示 Make: line 31: syntax error. Stop. 这个到底是啥子意思啊,很不明白得啊!$$
  • 在www.java.sun.com网站down下来的j2ee tutorail,提到How to Build and Run the Examples,里面有不明的地方,请帮帮忙,谢谢!!!
  • RH 9启动遭遇到不明shell,求救!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3