JAVA和C++比教学 :算式执行顺序

原创 2016年08月29日 21:31:37

1、JAVA
java中常见的运算符执行顺序如下
这里写图片描述
在java中,计算的时候都是优先级高的先执行。优先级相同的遵循其关联方向。

详细的优先级表格如下

优先级   操作符   含义        关联性  用法 
----------------------------------------------------------------
1        [ ]      数组下标      左    array_name[expr] 
         .        成员选择      左    object.member 
         ( )      方法参数      左    method_name(expr_list) 
         ( )      实例构造      左    class_name(expr_list) 
         ++       后缀自增      左    lvalue++ 
         --       后缀自减      左    lvalue-- 

2        ++       前缀自增      右    ++rvalue 
         --       前缀自减      右    --lvalue 
         ~        按位取反      右    ~expr 
         !        逻辑非        右    !expr 
         +        一元加        右    +expr 
         -        一元减        右    -expr 

3        ( )      强制转换      右    (type)expr 
         new      对象实例化    右    new type() 
                                      new type(expr_list) 
                                      new type[expr] 

4        *        乘            左    expr * expr 
         /        除            左    expr / expr 
         %        求余          左    expr % expr 

5        +        加            左    expr + expr 
         -        减            左    expr - expr 
         +        字符串连接    左    strExpr + strExpr 

6        >>       有符号右移    左    expr >> distance 
         >>>      无符号右移    左    expr >>> distance 

7        <        小于          左    expr < expr 
         <=       小于等于      左    expr <= expr 
         >        大于          左    expr > expr 
         >=       大于等于      左    expr >= expr 
      instanceof  类型比较      左    ref instanceof refType 
         ==       等于          左    expr == expr 
         !=       不等于        左    expr != expr 

8        &        整数按位与    左    integralExpr & integralExpr 
         &        布尔与        左    booleanExpr & booleanExpr 

9        ^        整数按位异或  左    integralExpr ^ integralExpr 
         ^        布尔异或      左    booleanExpr ^ booleanExpr 

10       |        整数按位或    左    integralExpr | integralExpr 
         |        布尔或        左    booleanExpr | booleanExpr 

11       &&       逻辑与        左    booleanExpr && booleanExpr 

12       ||       逻辑或        左    booleanExpr || booleanExpr 

13       ? :      条件运算      右    booleanExpr ? expr : expr 

14       =        赋值          右    lvalue = expr 
         *=       乘赋值        右    lvalue *= expr 
         /=       除赋值        右    lvalue /= expr 
         %=       模赋值        右    lvalue %= expr 
         +=       加赋值        右    lvalue += expr 
         +=    字符串连接赋值   右    lvalue += expr 
         -=       减赋值        右    lvalue -= expr 
         <<=      左移赋值      右    lvalue <<= expr 
         >>=   有符号右移赋值   右    lvalue >>= expr 
         >>>=  无符号右移赋值   右    lvalue >>>= expr 
         &=    整数按位与赋值   右    lvalue &= expr 
         &=       布尔与赋值    右    lvalue &= expr 
         |=    整数按位或赋值   右    lvalue |= expr 
         |=       布尔或赋值    右    lvalue |= expr 
         ^=   整数按位异或赋值  右    lvalue ^= expr 
         ^=     布尔异或赋值    右    lvalue ^= expr 

所以我们再来看这个最著名的考题
int i =2
i = i++ + ++i
后缀自增的++的运算级最高
所以第一步运算的结果是
i=3
i = 2 + ++i
第二步运算的结果是
i = 4
i =2+4
所以最后输出的答案是6

2、C++
在C语言里,++i返回的是左值,左值是可以继续运算的。而++i返回的是右值。右值是const的,不能再被改变。所以,(i++)++之类的表达式通不过编译的。在java中,i++和++i产生的都是const值,所以就算是(++i)++也通不过编译,
赋值操作是左结合的,也就是说a=b=c是先算b=c,然后再运算a=b的。而+操作时右结合的,也就是说
a+b+c是先算a+b,再算(a+b)+c的。一般来说,算术运算都是左结合的。C++的
这里写图片描述

java实现四则运算,难点主要在理解加减乘除优先级以及使用递归

采用递归的方式实现基本的四则运算。 首先弄清楚四则运算的优先级,比如一个混杂加法和减法的式子,减法的优先级要高于加法,也就是你从左往右算,先算减法是正确的,先算加法会得到错误的答案。比如3-2+1,...
  • kaiyuantao
  • kaiyuantao
  • 2016年01月07日 16:02
  • 2943

Java比C++更快!

转自:http://sailing1987.spaces.live.com/blog/令我兴奋的消息:Java比C++更快!如果我说Java程序的运行速度比C++程序快,你相信吗?我知道你会说“不可能...
  • yongzhewuwei_2008
  • yongzhewuwei_2008
  • 2006年11月16日 10:49
  • 4074

为什么Java永远比C++慢?

转载的文章,其中谈到了java比C Why Java Will Always Be Slower than C++  by Dejan Jelovic  为什么Java永远比C++慢?  ...
  • chrysanthemumcao
  • chrysanthemumcao
  • 2014年08月11日 17:20
  • 3741

java和c/c++的运行效率,谁的比较高?

  • Ideality_hunter
  • Ideality_hunter
  • 2016年12月03日 11:34
  • 1503

Java中静态代码块、非静态代码块、构造函数的执行顺序与作用

一、观察一段源码与结果 public class StaticDemo { private static int i=1; static { System.out.println("static前代码...
  • lezizai_happy
  • lezizai_happy
  • 2015年07月16日 18:09
  • 1557

C/C++比Java性能好的原因

大多数程序员都认为C/C++会比Java语言快,甚至于觉得从Java语言诞生以来,“执行速度缓慢”的帽子就应当被扣在头顶,这种观点的出现是由于Java刚出现的时候JIT编译技术还不成熟,主要靠解释器执...
  • hhq163
  • hhq163
  • 2012年02月02日 10:08
  • 3173

java的优点,java与c++的区别

java的优点                     --《java程序员面试笔试》 1.Java为纯面向对象语言,它能够反映一切生活中的对象,编写程序更为容易 2.平台无关性,"一次编译,到处运行...
  • warren_1992
  • warren_1992
  • 2016年04月05日 15:50
  • 1752

蓝桥杯 算法训练 最大的算式(动态规划)

问题描述   题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有...
  • u013993712
  • u013993712
  • 2016年05月08日 00:37
  • 1366

C/C++比JAVA快的原因

大多数程序员都认为C/C++会比Java语言快,甚至于觉得从Java语言诞生以来,“执行速度缓慢”的帽子就应当被扣在头顶,这种观点的出现是由于Java刚出现的时候JIT编译技术还不成熟,主要靠解释器执...
  • zhaoxiatengkong_1
  • zhaoxiatengkong_1
  • 2012年04月10日 21:04
  • 2844

JAVA为什么没有C/C++运行速度快

java是在JVM虚拟机上运行的,编译后产生.class中间字节码文件运行在Java虚拟机上,经过解释才放到真实机器上运行的。 而C/C++是CPU直接运行的,直接运行在机器上。 C/C++(*....
  • zxyolo
  • zxyolo
  • 2016年08月14日 21:58
  • 686
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA和C++比教学 :算式执行顺序
举报原因:
原因补充:

(最多只允许输入30个字)