当然是0了,i+=i++ <=> i=i+i++ ,i一开始为0,运算后此时i也为0,如果后面再有关于i的运算,i就会变为1,但是这个语句后没有这样的运算,只有 System.out.println(i); 所以i为0了!
解决方案 »
- 如何分别获取到用户PATH和系统PATH?
- java获取键盘方向键的方法
- 捕获异常时,程序的运行顺序
- 求一个JAVA读和写EXCEL文件的类
- taglib directive for "bean" does not exist or Tld is not found是什么原因?
- 可能是classpath的问题
- Java的普通的array(不是类)作为参数传递是传递值还是传递引用
- ---------------------- JAVA 疯了 --------------------
- 急!急!急!请求帮助!谢谢!!!
- Eclipse无法运行
- r jb有没有自动缩进的代码编排功能?怎么用?就象vc的 alt+F8那样! !!!
- 索源码----网吧管理
你System.out.println(i)实际上是显示了0(没有运算前i的状态)。
你要使他显示1只要吧i+=i++改成i+=++i就行了。
这是计算机的编程的基本知识阿。你要好好补补课了。
:)祝你进步
i += i ++; 应该等价于 i += (i ++);
但是我又有奇怪的发现:
尝试以下:
public class Test{
public static void main(String[] args){
int i = 0;
i += (i ++);
System.out.println("i :" + i);
System.out.println("i ++ :" + i++); // !!!
}
}结果:
i :0
i ++ :0
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,j = 0;
j += i ++;
System.out.println("j+=:" + j);
System.out.println("i :" + i);
}
}这是的j=0 i=1
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.
public class Test extends java.lang.Object {
public Test();
public static void main(java.lang.String[]);
}Method Test()
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 returnMethod 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 <Field java.io.PrintStream out>
12 iload_1
13 invokevirtual #3 <Method void println(int)>
16 return
for(int i=0;i<100;i++){
if(i==0){
System.out.println("i++是先执行i原来的值后才加1");
}
}
就是说,在for语句里面,我们虽然在前面的“int i=0;i<100;i++”运用了i++,但是,第一个i仍然是i的初始值0,在随后的循环中,i才不断的加1; 这样,我相信大家就很好的理解为什么上面的例子会出现问题:
i+=i++; 因为没有循环,里面的i++根本没有机会加1。 大家不要被欺骗了! :)
//has valid value
} else {
//null or equals to space("")
}
public static void main(String[] args){
int i,j = 0;
j += i ++;
System.out.println("j+=:" + j);
System.out.println("i :" + i);
}
}
这里的结果为j=0 i=1 ,i在执行完j+=i++后,自动加1了。
String myString;//change myString's valueif (myString != null && !(myString.trim()).equlas("")) {
//^刚才漏了这个,呵呵。 //has valid value
} else {
//null or equals to space("")
}