x=x+1;x++;x+=1问题? x=x+1;x++;x+=1执行效率的顺序?执行完x的值及原因,值我们可以用jbulider测出来,可原因说不出来,各位大吓谈谈如何? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 x都是2效率:x++> x+=1> x=x+1 我定义了3个变量,分别为x,y,z,初始化为1,然后进行x=x+1;y+=1;z++;然后打印x,y,z你看一下结果是多少,x就是为1 难道用jbuiler执行的结果不误: public static void main(String[] args) { int j=1,m=1,n=1; j=j++; m+=1; n++; System.out.println(j+"PPP"+m+"PPP"+n); }结果:1PPP2PPP2最好试一样,别老与c++比较 我定义了3个变量,分别为x,y,z,初始化为1,然后进行x=x+1;y+=1;z++;然后打印x,y,z你看一下结果是多少,x就是为1为2 搂主是个鸟人,分不清x=x+1和x=x++ 那么int i=1;i=i++;//执行结果i为1;这句在jvm中执行是什么过程,是第二个i的值符给第一个i后,第二个i在++,但是最后使用的是第一个i的值。本人认为第一个i和第二个i不是同一个索引。但是在 int j=1,i=1; i=j++;//i为1,j为2本人认为i=i++;这样的写法有点变态原因: 没有实际意义,//假如想表示i加一,就直接i++好了 不过要钻牛角尖,这个问题就再好不过了 x++在java中叫postfix ++x叫prefix两者不同的是x++先value再operate,所以x++是1 呵呵,我记得x = x + 1;和 x += 1的效率是一样的。 编译时处理j++ 和j+=1是一样的j=j+1 给j创建了另一个副本 X++,是先赋值,后加1,如果X=1,Y=X++;x+=1;x=x+1;则运算结果分别是y=1,x=2;x=2;x=2;我记得这几种运算效率都是一样的,只是看这样写起来方便,就怎么写吧了! i=i++;//执行结果i为1;这是因为,i++ 有点特殊,如果i=i++的话, 那他做完了赋值,后面的++是不会做的,也就是说如果 i=i++ 相当于i=i 如果你真的要 做i++的赋值,应该是用另外一个变量来赋值例如 j=i++ 而不是i=i++ i=i+1和i+=1一般来说一样,但要搞清楚,他们是有着质的不同具体可以从这个例子中体会到: short i=1; i=i+1; //有错 i+=1; // right i+1是整形的,符值给short型的i,便会报错,i=(short)i+1,这样也可以。 i+=1;没错是应为+=是一个符号,他两端的两个数可以是不同类型的。 水仙花数代码 关于String.split的问题 如何将数据生成XML发送给JBOSS 关于统计文件里单词数的问题 如何在一个文本框内实现智能感知并跟随光标移动的下拉列表框?100分送上 简单问题:怎么得到窗口中控件(如按钮)相对与屏幕的位置 jb7编译的linux无法在redhat8中运行,怎么回事?? 实例化bean时出错,请高手指点 奇怪﹕讨论Java,JavaScript等开发技术 ? 高手求救,求一正则表达式 jsp+tomcat连接数据库sql server2000问题 这样的类如何编译
效率:x++> x+=1> x=x+1
x=x+1;
y+=1;
z++;
然后打印x,y,z你看一下结果是多少,x就是为1
public static void main(String[] args)
{
int j=1,m=1,n=1;
j=j++;
m+=1;
n++;
System.out.println(j+"PPP"+m+"PPP"+n);
}
结果:1PPP2PPP2
最好试一样,别老与c++比较
x=x+1;
y+=1;
z++;
然后打印x,y,z你看一下结果是多少,x就是为1
为2
int i=1;
i=i++;//执行结果i为1;
这句在jvm中执行是什么过程,是第二个i的值符给第一个i后,第二个i在++,但是最后使用的是第一个i的值。
本人认为第一个i和第二个i不是同一个索引。
但是在 int j=1,i=1;
i=j++;//i为1,j为2
本人认为i=i++;这样的写法有点变态
原因: 没有实际意义,//假如想表示i加一,就直接i++好了
不过要钻牛角尖,这个问题就再好不过了
两者不同的是x++先value再operate,所以x++是1
j++ 和j+=1是一样的
j=j+1 给j创建了另一个副本
是不会做的,也就是说如果 i=i++ 相当于i=i
例如 j=i++ 而不是i=i++
具体可以从这个例子中体会到:
short i=1;
i=i+1; //有错
i+=1; // right i+1是整形的,符值给short型的i,便会报错,i=(short)i+1,这样也可以。
i+=1;没错是应为+=是一个符号,他两端的两个数可以是不同类型的。