运算符的优先级

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

简介运算符是一种特殊的符号,运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号,运算符和操作数的有效组合称为表达式。

java中运算符主要分为以下几类:

赋值运算符算术运算符关系运算符逻辑运算符条件运算符(三目运算符)位运算符赋值运算符赋值运算符用于给变量或者常量指定值,赋值运算符的符号是"="。

例

inta =1;//定义时直接赋值intb;intc;

b= c =2;//可以在一个语句内为多个变量赋值intd = b +3;//变量运算后再赋值,先执行右边,再执行左边

算术运算符Java支持加减乘除和求余等基本数学运算。分别是以下几种:

运算符

说 明

一元

-

一元减,即取负

++

自增,如:++a等价于a = a + 1

--

自减,如:--a等价于a = a – 1

二元

+

加法,返回两个操作数的和

-

减法,返回两个操作数的差

*

乘法,返回两个操作数的积

/

除法,返回两个操作数的商

%

取模,返回两个操作数整除后的余数

加法运算符:+

doublea =1.1;doubleb =1.2;doublesum = a +b;

System.out.PRintln(sum);//输出2.3

减法运算符:-

doublea =2.2;doubleb =1.1;doublesub = a -b;

System.out.println(sub);//输出1.1

乘法运算符:*

inta =11;doubleb =1.2;doublemultiply = a *b;

System.out.println(multiply);//输出1.32

除法运算符:/

除法运算符有点特殊:如果运算的两个值都是int,得到的结果也是int类型,会把小数点直接去掉,也不会四舍五入

inta =10;intb =4;doublec = a/b;

System.out.println(c);//10初4本来结果是2.5,但是两个int类型数相除结果是int类型数,尽管将结果值赋给了double,

//但输出结果变成了2.0,相当于运算完成时将小数点给去了,再转换为2.0doublea2 =5.2;doubleb2 =3.1;doublec2 = a2/b2;

System.out.println(c2);//两个double值运算,输出结果:1.6774193548387097System.out.println(5/0.0);//除数为double型0.0,输出负无穷大System.out.println(5/0);//除数为0,运行时会报错

求余运算符:%

inta =5;intb =3;doublec =3.2;

System.out.println(a%b);//输出2System.out.println(a%c);//1.7999999999999998System.out.println(0%5);//输出0System.out.println(5%0);//运行会出错

求负:-

inti = -1;inti2 = -i;

System.out.println(i2);//输出1

自加:++

inti =1;

i++;//相当于将i的值加1;System.out.println(i);//输出2

自加符号既可以放在变量前面,也可以放在变量后面,放在前面先把操作数加1,再进行表达式的运算,放在后面则相反。

inti1 =1;inti2 =1;inti3 = i1++;//此时i3的值为1,i1的值为2;它是先将i1的值赋给了i3,再将i1加1;inti4 = ++i2;//此时i4的值为2,i2的值也为2;它是先将i2的值加1,再将值赋给i4;

自减:--

作用类似于自加

inti1 =1;inti2 =1;inti3 = i1++;//此时i3的值为1,i1的值为0;它是先将i1的值赋给了i3,再将i1减1;inti4 = ++i2;//此时i4的值为0,i2的值也为0;它是先将i2的值减1,再将值赋给i4;

关系运算符(比较运算符)关系运算符可以测试两个操作数之间的关系(但不会改变操作数的值),关系表达式的结果为boolean型true/false:

运算符

说 明

==

等于,检查两个操作数是否相等

!=

不等于,检查两个操作数是否不相等

>

大于,检查左操作数是否大于右操作数

>=

大于等于,检查左操作数是否大于或等于右操作数

<

小于,检查左操作数是否小于右操作数

<=

小于等于,检查左操作数是否小于或等于右操作数

System.out.println(4==4);//结果为trueSystem.out.println(4!=3);//结果为trueSystem.out.println(true==false);//结果为false

逻辑运算符逻辑运算符用于操作boolean类型的变量或常量

运算符

说 明

Java

一元

!

逻辑非(NOT)

二元

&

逻辑与(AND)(不短路)

左边为false,依然会运算右边

|

逻辑或(OR)

如左操作数为true,依然运算右边操作数

&&

短路与

如左操作数为false,则不运算右操作数

||

短路或

如左操作数为true,则不运算右操作数

^

异或

当两个操作数不同时返回true,相同则返回false

看例子

System.out.println(!true);//结果为falseSystem.out.println(2>1&&1>1);//结果为falseSystem.out.println(2>1||1>1);//结果为trueSystem.out.println(true^false);//结果为true,异或,相当于把第一个前面一个值true取反,再进行“或”运算

下面我们来看一下 |于||的区别

inta =1;intb =1;if(a ==1| b++ >1){

System.out.println(b);//输出b的值为2,按位或虽然|符号左边结果为true,但依然会执行|符号右边的代码}

将|改为||

inta =1;intb =1;if(a ==1|| b++ >1){

System.out.println(b);//输出b的值为1,||符号左边结果为true,不会再执行||符号右边的代码}

条件运算符(三目运算符)它的一般形式是:

表达式1 ? 表达式2 : 表达式3

根据表达式1的结果来判断执行表达式2还是表达式3,如果表达式1的结果为true,则执行表达式2,否则执行表达式3;

条件运算符在某些情况下能够替代小型的if…else语句。

String s =1>2?"1大于2":"1不大于2";

System.out.println(s);//输出 1不大于2

位运算符位运算符既参加运算的两个数据,按二进制位进行运算。Java的位运算符有如下7个:按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。

具体介绍可以参考下面这篇文章:

http://www.cnblogs.com/yezhenhan/archive/2012/06/20/2555849.html

运算符的优先级很多情况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:

优先级

运 算 符

1

括号: ()和[]

2

一元运算符:-、++(前置)、--(前置)、!

3

算术运算符:*、/、%、+和-

4

关系运算符:>、>=、<、<=、==和!=

5

逻辑运算符:&、|、&&和||

6

条件运算符:? :

7

赋值运算符:=、*=、/=、%=、+=和-=

尽管运算符有优先级,一个表达式中会根据表达式运算符的优先级进行先后运算,但是在实际编程中如果一个表达式很长也不会推荐这样写,而是分为几步写,因为写在一起可读性太差。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航