黑马程序员技术交流社区

标题: java运算符的优先级问题 [打印本页]

作者: 杨建聪    时间: 2013-2-27 22:23
标题: java运算符的优先级问题
运算符的优先级到底是什么样子的?
百度了,也没看懂那个表格
有知道怎么记忆和理解的么?

下面是习题:

思考一下代码运行结果:

System.out.println(1 + 2 * 3);                                       

System.out.println(false && true || true);               
System.out.println(true || true && false);

int a = 2;
int b = a + 3 * a++;
System.out.println(b);

int a = 2;
int b = a++ + 3 * a;
System.out.println(b);

int a = 1;
int b = 2;
System.out.println(a+++b);

谁能帮忙解答下
作者: 颜春    时间: 2013-2-28 16:26
当乘法和除法同时出现在表达式中时,每个运算都按照它们从左到右出现的顺序进行计算。当乘法和除法同时出现在表达式中时,每个运算也都按照它们从左到右出现的顺序进行计算。可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。但是,在括号之内,运算符的优先顺序不变。字符串连接运算符 (&) 不是算术运算符,但是,就其优先顺序而言,它在所有算术运算符之后,而在所有比较运算符之前。Like 的优先顺序与所有比较运算符都相同,实际上是模式匹配运算符。Is 运算符是对象引用的比较运算符。它并不将对象或对象的值进行比较,而只确定两个对象引用是否参照了相同的对象。
作者: Benwolf0818    时间: 2013-2-28 16:59
System.out.println(1 + 2 * 3);  //1+(2*3)=7                                      

            System.out.println(false && true || true); //从左至右运算false&&true=false||true=true               
            System.out.println(true||true&&false );//从左至右运算true||(true&&false)=true||false=true   &&的优先级高于||
             
            int a = 2;
             int b = a + 3 * a++;
             System.out.println(b);//b=2+3*2=8 a自加变为3
           
            int a = 2;
             int b = a++ + 3 * a;
             System.out.println(b);//b=2+3*3=11,第一个a是先取值再自加为3的
             
            int a = 1;
             int b = 2;
             System.out.println(a+++b);//++的算符优先级高于+,所以是a++,a+++b=1+2=3,a++是先取值再自加的,a值变为2
作者: Benwolf0818    时间: 2013-2-28 17:01
java运算符优先级列表http://blog.csdn.net/xiaoli_feng/article/details/4567184
作者: Household    时间: 2013-12-8 20:41
你看看,这个好不好记,毕老师说用多了就熟悉了,不记也得记,哈哈!!

运算符优先级.jpg (88.22 KB, 下载次数: 35)

运算符优先级.jpg





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2