分享
 
 
 

Java 语法介绍(二):运算符

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

(akebono2001年08月06日 09:31)

1:优先级

优先级是指同一式子中多个运算符被执行和次序,同一级里的操作符具有相同的优先级,相同优先级得操作符号相遇是,根据结合性决定运算次序,下面从高到低的优先级列出了运算符。同一行中的运算符优先级相同。

.[]() 结合性从左到右

++--!~ 结合性从左到右

*/% 结合性从左到右

+- 结合性从左到右

<<>>>>> 结合性从左到右

<><=>= 结合性从左到右

==!= 结合性从左到右

& 结合性从左到右

^ 结合性从左到右

&& 结合性从左到右

结合性从左到右

?: 结合性从右到左

= 结合性从右到左

例如对于表达式:a=b+c*d/(c^d),因为括号优先级最高,所以先计算c^d,接着是c*d,然后除以c^d,最后,把上述结果与b的和存储到变量a中。

2:整型运算符

整型运算符按操作数的多少可分为一元和二元两类,一元运算符一次对一个变量进行操作,二元运算符一次对两个变量进行操作。对于运算来说,假如有一个变量或操作数是长整型的,那么结果就肯定是长整型的,否则即使操作数还没有确定是字节型、短整型或字符型,运算结果都是整型,下表是一元运算符。

运算符 实际操作 例子

- 改变整型数符号 -i

~ 位运算:非 ~i

++ 加1 i++

-- 减1 i--

注:一元取反运算符(-)用来改变整数的正负号,逐位求反把所变量所有是1的位变成0,是0的位变成1,加加和减减(++,--)把变量的值加1或减1。

以下是一个具体例子:

int i=0;

int j=1;

for (i=1;i<10;i++)

{

j--;

System.out.println(i+""+j+"");

}

一元运算符执行的方式是改变它们所作用的变量的值,对一元取反和逐位求反来说,变量的值并不改变,而对加和减运算(++,--)来说,就量的值被改变了,例如:

int i=10,j=10,k=10,l=10;

System.out.println(i+""+j+""+k+""+l+"");

j++;

i--;

~k;

-l;

System.out.println(i+""+j+""+k+""+l+"");

注重:j和i被改变并打印出它们的新值,可是k和l仍然为原来的数值,当在复合表达式中使用一元取反和逐位求余运算时,你实际上是在用一个临时存贮操作数的新值。

++和--既是前置运算符也是后置运算符,这就是说,它们既可以放在操作数前面(++x),也可以放在后面(x++),假如它们被用在复合语句中如:

i=x++; 或 i=++x;

那么第一个语句中x把值赋给i以后再加1,而第二个语句先把x加1,再把新的x值赋给i。

整型运算符的第二种类型是二元运算符,这种运算并不改变操作数的值,而是返回一个必须赋给变量的值,下表列出了二元运算符。

运算符 实际操作 例子

+ 加运算 a+b

- 减运算 a-b

* 乘运算 a*b

/ 除运算 a/b

% 取模运算 a%b

& 与运算 a&b

或运算 ab

^ 异或运算 a^b

<< 左移 a<<b

>> 右移 a>>b

>>> 右移 a>>>b

注重:>>与>>>的基本功能都是右移,但>>是用符号位来填充右移后所留下的空位,而>>>则是用零来填充右移后所留下的空位。

还有一类运算,它们形如:j-=i,这里-=是二元运算-和赋值运算=的复合运算,它等价于j=j-i,这种复合方式适用于所有的二元运算符。

这里有几点关于整型运算进一步说明,首先,整数除法向靠近0的方向取整;其次,假如你除以0或者对0取模,程序就会在运行时被强行中止,假如你的运算结果超出最小极限,或者说是下溢,结果将为0,假如超出了最大极限,就将会导致结果的回绕。

3:布尔运算符

另外还有一些运算符能产生布尔类型的结果,我们把它们称为布尔运算符,下表列出了这些运算符。

运算符 实际操作 例子

< 小于 a<b

> 大于 a>b

<= 小于等于 a<=b

> 大于等于 a>=b

== 等于 a==b

!= 不等于 a!=b

在这里要指出的是相等运算符==可能会给你带来许多麻烦,很多人在比较两个值时往往错用了等号=,以致于变成了赋值操作,所以在编程中一定要注重你在比较数值时用的是==。布尔类型本身还有几个逻辑运算符,它们可以对布尔类型的数据进行运算:!,&&,//

其实假如你把布尔类型的值true等效地看成1,false看成0,那么对于相同的运算符,整型运算的法则对布尔类型也是适用的。

布尔运算符中还有一种三元运算符,它的格式如下:

Operand ? Statement1:Statement2

在这个式子中,先计算Operand的真假,若为真,则执行Statement1,若为假,则执行Statement2。下面的代码给出了这种运算的一个例子:

(a>b)?a:b;

这个表达式将返回a和b中较大的那个数值。

4:浮点型运算符

传统的浮点型二元运算除了赋值运算符(+=,-=.*=./)取模(%)和取模赋值(%=0)使浮点数值等价于整数除法,同样,++和--使变量的值增加或减小1。

同整型变量相似,结果被放在最大长度的类型里,假如运算包括两个浮点类型,结果也是个浮点类型,假如有一个或几个是双精度浮点型,结果就是双精度浮点型,当你使用关系运算符:>、<、>=、<=、==和!=时,注重浮点变量与整型的不同,只有a==b成立并不能说明a<b和a>b不成立,这是因为浮点类型数值次序同整型不同,当你写程序,对浮点型数值进行假设时要小心,浮点型数值也包括inf,代表无穷大,溢出产生无穷大inf,下溢产生0。

5:字符串运算符

+运算符可以把字符串并置起来,假如哪一个操作数不是字符串,在并置之前它会被转换成字符串,另外,+=运算符把两个字符串并置的结果放进第一个字符串里,在前面的例子里,当你想把几项打印在同一行里时使用的是+运算符,试着在解释器里用System.out.println和+运算符来造成不同的组合输出。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有