12、笔记:运算符的优先级


到目前为止,我们已经学习到了Java语言的好几种运算符,包括算数运算符、赋值运算符、逻辑运算符、关系运算符等基础运算符,当我们书写这些运算符时,那运算符之间的优先级顺序是如何排列的?
运算符优先级顺序总结:
正负号>乘除余数>加减>大于 小于 等等于 不等于 不大于 >与或非>各种赋值符号
1、首先是算数运算符,Java中的算数运算符主要包括加+ 减- 乘* 除/ 负号- 正号+ 以及 取余%,就数学上边的四则运算来说,已经被我们熟知的乘法和除法的优先级高于加法和减法,那他们在java中的优先级顺序也是如此;取余数依赖除法的操作,所以余数和乘除法的优先级相同;还有正负号,数学上约定俗成负数可以直接参与四则运算,这就意味着负号作为数字前面的减号,他的优先级比四则运算要高,
于是算数运算符的优先级顺序是:正负号>乘除余数>加减;
 
//算数运算符
//比较加减乘除以及取余数运算优先级顺序:
int a = 1 + 2/2 +8*5;
System.out.println("a:"+(1 + 2/2 +8*5));//这里可以看出是先乘除并且取余数后加减
//比较正负号以及乘除运算优先级顺序
int b = -5+2*3-2;
System.out.println("b:"+(-5+2*3-2));
//这里可以看出先乘除后正负
自增自减运算符:在Java中,需要注意的是,a++和++a,从字面意思来看,俩者除了++位置不同,其他都是一样,可是在java运算中,a++表示先赋值,再进行计算,而++a却是先进行计算,再进行赋值,不管是a++,还是++a,里边的a都表示a = a + 1,就是运行a++或者++a时,后边隐藏了一行代码a= a + 1;
 
int a = 10; int b = a++; //a=a+1 执行完代码后,先赋值给b,再自增
System.out.println(a); int c = ++a;//执行代码前,先自增,再赋值
System.out.println(b+c);
System.out.println(b);
System.out.println(c);
 
 
2、逻辑运算符:Java中逻辑运算符主要包括与&& 或|| 非!() ,
 
//与and:俩个变量同时为真,结果则为真;
// 或or:俩个变量有一真,结果则为真;
// 非(取反):如果是真,则为假,如果是假,则为真;
boolean a = true; boolean b = false;
System.out.println("a && b:"+(a&&b));
System.out.println("a || b:"+(a||b));
System.out.println("!(a && b):"+(!(a&&b)));
面试题目:
短路运行
在操作逻辑运算符时,我们会遇到一种名为“短路”的情况,这就意味着只要能准确无误的得出整个表达式真假的值,就不再进行表达式余下的部分,因此,整个表达式靠后的部分有可能不被进行运算;以下代码表示:
//短路运行 :如果变量d中,在与的情况下,前面(c<4)为真才会执行后边(c++<4);如果前面为假,则不执行后边;所以输出结果为假false; int c = 5; boolean d = (c<4)&&(c++>4); System.out.println(c); System.out.println(d); //结果为false
 
3、关系运算符:关系运算符主要包括> < = >= <= == !=instanceof(不等于)
 
//关系运算返回的结果 true false
//取余叫做模运算
int a = 3;
int b = 2;
int c = 4;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
4、位运算符:异或运算符是用^符号表示,其运算规律为:俩个操作数的位中,首先转换为二进制之后,相比较,相同则结果为0,不相同则为1;
//异或运算符 ^
int a = 1;//需要转换二进制:0001
int b = 2;//需要转换二进制:0010
System.out.println("a^b:"+(a^b));
//结果为3,二进制为0011
5、条件运算符==三元运算符:条件运算符主要包括问号?和冒号:这俩个运算符,
 
int score = 90;
String type = score <60?"不及格":"及格";
System.out.println(type);//输出及格
 
6、三元运算符:三元运算符包括+= -= *= /=等四个基础运算符,在Java中,我们举例说明,a+=b,这里表示的是a=a+b;
 
int i = 2;
int j = 3;
i+=j;
System.out.println(i);//结果:5
7、位运算符了解就OK:包括& | ^ >> <<
 
boolean a =true;
boolean b =false;
boolean c = a&b;
System.out.println(c);
问&&和&的区别?
答:俩者都是与的意思,都是需要全部为真,输出的结果才能为真,但&&带有短路功能,当表达式能准确的输出结果时,则不再运行余下表达式,而&,不管真假,依旧会运行,以下代码表示:
//&
int a =4;
int b =2;
boolean c = (a++>2)&(++b<5);
System.out.println(c);//输出结果ture
//&&
boolean d = (a++>2)&&(++b<2);
System.out.println(c);//输出结果false
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM