`

i=i+1与i+=1的区别及效率

 
阅读更多

在做个java优化的PPT时,看到了i=i+1与i+=1的区别,在这之前还真没想到那么细。

1.x=x+1,x+=1及x++的效率哪个最高?为什么?

x=x+1最低,因为它的执行如下。

(1)读取右x的地址;

(2)x+1;

(3)读取左x的地址;

(4)将右值传给左边的x(编译器并不认为左右x的地址相同)。

x+=1其次,它的执行如下。

(1)读取x的地址;

(2)x+1;

(3)将得到的值传给x(因为x的地址已经读出)。

x++最高,它的执行如下。

(1)读取右x的地址;

(2)x自增1.

 

2.x=x+1,和 x+=1; 在什么情况下不成立 而且 x=x+1 是错误的; (类型隐式转换)

short x=1;
x+=1;
x=x+1; //因为 x是 short 类型 .当它+1 会自动转变成int 当是等于又 是 short 类型..所以会报错;

 

3.x=x+1,和 x+=1; 在什么情况下不成立 而且 x+=1 是错误的;
Object x="abc";
String y="def";
x+=y;
x=x+y

分享到:
评论

相关推荐

    谈谈Java中的i++

    这是和JVM的内存分配有关,JVM在处理这段带代码时,会先把i++的结果赋值给一个临时变量temp,然后再将这个临时变量的值赋值给i。即如下: int i = 0; int temp; // i = i++; int a = temp = i++;// 临时变量...

    浅析PHP中的i++与++i的区别及效率

    先看看基本区别: i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值 看一些视频教程里面写for循环的...先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就

    C++面试题:++i和i++哪个效率高?

     2、我们自定的数据类型,++i效率高于i++,通过运算符重载来给大家说明这一点。 Operator Operator::operator++() { ++value; //内部成员变量 return *this; } Operator Operator::operator++(int) { ...

    浅析PHP中的i++与++i的区分及效率_.docx

    浅析PHP中的i++与++i的区分及效率_.docx

    数据结构(Java)复习题

    1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ① A.操作对象 B.计算方法 C....i=1; while (i<=n) i=i*2;

    数据结构第一章答案

    数据结构及应用算法教程(修订版)(严蔚敏 陈博文)第一章习题答案

    三元组稀疏矩阵乘法分析

    [1]根据定义计算Q的算法如下:for(i=1;i<=m;++i)for(j=1;j<=n2;++j){Q[i][j]=0;for(k=1;k<=n1;++k)Q[i][j]+=M[i][k]*N[k][j];}这个算法用到了大量的循环和相乘运算,时间复杂度为O(m1×n1×n2),算法效率不高。而矩阵...

    数据结构课程设计C语言版

    if(q[i]>q[i+1]) { long t=q[i]; q[i]=q[i+1]; q[i+1]=t; } // Print(q,n); LARGE_INTEGER liPerfNow={0}; QueryPerformanceCounter(&liPerfNow); double time=liPerfNow.QuadPart - m_...

    给定一个整数n,求出所有连续的且和为n正整数

    给定一个整数n,求出所有连续的且和为n正整数。比如对于整数27,结果为2~7、8~...(3) 如果和sum=i+(i+1)+…+j等于n,则i+(i+1)+…+j为一组解,输出该解,并将连加的右端加上(j+1);(4) 重复2,3步,直到i大于n/2为止。

    计算机系统结构课后习题3

    a[i+1]=b[i+1]+a[i+1]; /*s1’*/ c[i+2]=a[i+1]+d[i+1]; /*s2’*/ a[i]=2*b[i+1]; /*s3’*/ b[i+2]=2*b[i+1]; /*s4’*/ 输出相关:无 反相关:无 真相关:s1与s2;(写后读) 由于循环引入的相关...

    探讨++i与i++哪个效率更高

    在自定义数据类型的情况下,++i效率更高! 分析: (自定义数据类型的情况下) ++i返回对象的引用; i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。 (重载这两个...

    i++循环与i-–循环的执行效率(递增与递减效率)

    i++循环与i-–循环的执行效率(递增与递减效率),需要的朋友可以参考下。

    最新JAVA编程题全集_50题及答案

    c[i+1]=(char)(c[i+1]-32); } } str=new String(c); System.out.print(str); 2. 将This is a test倒着输出tset a si sihT (用StringBuffer) String str="this is a man"; StringBuffer sb=new ...

    数据结构第一章作业答案参考(C语言)

    第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。... A[j]与A[j+1]对换; 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B.O(nlog2n) C. O(n3) D. O(n2)

    冒泡排序优化算法

    冒泡排序的优化算法,提高了效率int ... if(p[j+1][j]) { temp = p[j+1]; p[j+1] = p[j]; p[j] = temp; a = false; } if(a) break; } for(int i=0;i;i++) cout[i]; delete[]p; system("pause"); }

    复杂网络算法

    for j=i+1:i+K/2 jj=j; if j>N jj=mod(j,N); end A(i,jj)=1;A(jj,i)=1; end end p=input('请输入随机化重连的概率p:'); for i=1:N for j=i+1:i+K/2 jj=j; if j>N jj=mod(j,N); end p1=rand(1,1);%%若...

    香农编码实验报告(1).doc

    i++){ cout请输入第"<<i+1个信源的概率: "; cin>>g[i]; } } void rank(int n,float *g){//重新排列 float templ; for(int i=0;i;i++){ for(int j=i+1;j;j++){ if(g[i][j]){ templ=g[i]; g[i]=g[j]; g[j]=templ; } } ...

    整数因子分解

    Description 大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm, 每个xi为大于1的因子,即1<xi<=n 。 例如:当n=12时,共有8种不同的分解式: 12 = 12 12 = 6*2 12 = 4*3 12 = 3*4 12 = 3*2*2 12 = 2*6 12 = 2...

    JS分页效果JS分页效果

    for (var i = 1; i <= this.pageCount; i++) { if (i > 0) { if (i == this.page) { strHtml += '<span title="Page ' + i + '">[' + i + ']</span>'; } else { strHtml += '...

Global site tag (gtag.js) - Google Analytics