java运算符为_JAVA运算符

运算符

运算符:就是再用变量或常量进行运算时,常用到的符号,即算数运算符、关系运算符、逻辑运算符、位运算符、移位运算符、赋值运算符、三元运算符、逗号运算符、字符串运算符、转型运算符。

1.算数运算符

问题:当一个浮点数据加上一个整型数据,结果会得到什么类型的数据?在不同类型的数据之间进行运算时,为了使结果更加精确,系统会将结果自动转化成精度更高的数据类型(若想将高精度转化为低精度,必须强制转化)。

如图:

241e83e0a51dc40225af26f8c2700c5d.png

这里的a是int类型,b是单精度浮点型(float类型),相加结果为一个浮点型(float)数据。

由此,为了保证经过算数运算符后结果的数据精度,尽量让结果与运算数据中精度较高的类型相同。

如何将结果进行转换,什么规律?

当使用运算符把两个操作数结合到一起时,首先会将两个操作数转化为相同类型的数据;

若操作数中有double/float/long,一定先转换成double/float/long,精度高低比较:double>float>long其他任何两个基本类型数据操作,两个操作数都会自动转化成int类型。

算术运算符总共有7种:“+”、“-”、“*”、“/”、“%”(余数)、“++”(自加)、“–”(自减)。

代码如图:

26b8e21811756834936c1a2c77d5267f.png

运行结果如图:

28a8639ee0296c85264a6e7ffed65a41.png

下面讨论自加和自减运算符的用法:

自加运算符分为两种:一种是前自加,一种是后自加;两者的区别在于运算时,自加的值是否参加运算。代码如图:

47173661e6f4e15561223774c036cebf.png

前自加,先让a的值加1,然后再将加1后的结果11赋给a,故,a的输出值为11;

后自加,先把b的值赋给b,然后,将b的值加1,存储到内存空间,故输出b=10,而存储在内存中的b的值为11。

f5114f3e759606f94e96948d90b1126f.png

010c1fb06c4b290e445452a4f915b898.png

同样的,自减运算符也有两种,一种是前自减,一种是后自减。用法与自加相同。

e1f21a84e7b0f5df7c7736979b4aad72.png

总结:

++x:因++在前,记为先加后用

x++:因++在后,记为先用后加

–x:因–在前,记为先减后用

x–:因–在后,记为先用后减

2.关系运算符:

关系运算符,指在两个操作数之间的关系,包括“>”、“=”、“<=”、“==”、“!=”.算数运算符的结果都是数字,而关系运算符的结果则是布尔型数据。

在实际开发中,常使用关系运算符作为判断条件,若条件为真,将如何处理,若条件为假,又该如何处理。

用例如下:

1c916140a95cc15df4c33f3a32bfc268.png

3.逻辑运算符

逻辑运算符共有3种:“非”、“与”、“或”。逻辑运算符一般与关系运算符结合起来使用。

(1)NOT运算符

NOT运算符就是一个否定的意思,英文中“NOT”就是“不”的意思,在Java中,NOT用符号“!”表示。

(2)AND运算符

英文“AND”的意思为“与”。使用它必须,满足AND前后两个条件。AND运算符在Java中用符号“&&”表示。

(3)OR运算符

英文“OR”为“或”的意思,使用它只要满足“OR”前后两个条件中的任意一个条件。OR运算符在Java中用符号“||”表示,原理如下,两个操作数之哟啊有一个是“true”,则结果为“true”,否则结果为“false”。

用例如图:

2cd75e466462e9031401d4fa5dba1aab.png

4.位运算符

位运算符主要针对二进制进行运算,包括“与”、“非”、“或”、“异或”。从表面上看和逻辑运算符有点像,但逻辑运算符是针对两个关系运算符来进行逻辑运算的,而位运算符主要针对两个二进制的位进行运算。

(1)与运算符

与运算符用符号“&”表示,使用规律如下:两个操作数中位都为1时,结果才为1,否则为0.如图:

4e36196253ff3e672ca610dbb06766c5.png

(2)或运算符

或运算符用符号“|”表示,运算规律如下:两个位只要有一个为1,则结果为1,否则为0.

e528537d9b4051fe5015c6ba9092ce38.png

(3)非运算符

非运算符用符号“~”表示,运算规律如下:如果位为0,结果为1;如果位为1,结果为0.类似于取反。

3da86ae3470e48c369f2915b255450c9.png

a的值为1,二进制数为0001,取反得到1110,最高位(左边第一位数字)为1表示负数,为了得到负数的二进制数,我们采用补数的方式进行计算,将取反后的结果“加1”,即1110取反得到0001加1后,结果为0010,0010是数字2的二进制数。

(4)异或运算符:

异或运算符用符号“^”表示,运算规律为,两个操作数的位中,结果相同得0,不同得1

如图:

b9490aa4cb08c034d1f52df5bdbd21ef.png

5.移位运算符

主要包括左移运算符“<>>”、带符号的右移运算符“>>”.

(1)左移运算符:用符号“<

(2)右移运算符:用符号“>>”表示,将运算符左边的运算对象向右移动运算符右边指定的位数。若是整数,在高位补0,若为负数,在高位补1

如图例:(“//”后忘记改了,勿理)

af74ac78fc9e0a50a3c741b737fc956e.png

由图例可知,移位运算符可以通过数位移动来代替乘法和除法运算。这里的倍数关系跟基数有关,二进制下,基数为2,若是右移则会变为原来的1/2,1/20,1/200…即除法运算。注意右移后空出来的高位的数值,有0和1两种形式,若想区分什么时候补0,什么时候补1,下面的二进制数表示负数的方法有明确说明。

二进制数在表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位位0时表示正数,为1时表示负数。

-1用8位二进制数数来表示的话是“10000001”吗?,答案显然不是,正确答案是“11111111”。

计算机在做减法运算时,实际上内部是在做加法运算,如何实现?在表示负数时适用“二进制的补数”。

补数就是用整数来表示负数。为了获得补数,我们将二进制数的各数位的数值全部取反,然后再将结果加1.例如,二进制数-1,只需求得1(00000001)的补数即可。00000001(原二进制数)—>11111110(取反后)—>11111111(+1后)

1+(-1)=00000001+11111111,出现了最高位溢出的情况,对于溢出的位,计算机会直接忽略掉,在8位的范围内进行计算时,100000000这个9位二进制数会被认为是0000000这一8位二进制数,即有效位只有8位。3-5=00000011+11111011=11111110,最高位为1,表示结果为负数,11111110的补数,取反加1后为00000010,即2的二进制数,结果为-2.

(3)无符号右移运算符

无符号右移运算符用符号“>>>”表示,是将运算符左边的对象向右边移动运算符右边指定的位数,并且在高位补0,其实右移n位,就相当于除上2的n次幂。

如图:

35997e30ca789c214478b0b8c3f873de.png

6.赋值运算符

赋值就是将数值赋给变量,而这个赋值运算符就充当了这个赋值的任务,其实最简单的赋值运算符就是“=”,除了“=”之外,还有“+=”、“-=”、“*=”、“/=”、“%=”、“>>=”、“>>>=”、“<<=”、“&=”、“|=”、“^=”.

如图例:

8a653e12efe8aa32ceff8baa4ec15c41.png

7.三元运算符

三元运算符一般用的很少,因为它在程序中的可读性很差,所以不建议经常使用三元运算符,但很少使用并不代表不使用。

三元运算符的表达形式如下:布尔表达式?值0:值1

它的运算过程:若布尔表达式的结果为true,就返回值0;若布尔表达式的结果为false,就返回值1.

如图例:

ba59f18340f4b0f3ce1c768efa7aa61d.png

注意不能断到下一行,会出现以下情况(无法正常编译)

5476205172e9658b6ecaf071b5fed837.png

8.逗号运算符:

在Java程序中,逗号运算符一般用来将几个数值彼此分开,例如数组中的每个元素都是使用逗号于=与其他元素隔开。

9.转型运算符:

将一种类型的对象或数据,经过强制转换而转变为另一种类型的数据。它的格式,在需要转型的数据前加上“()”,然后在括号内加入需要转化的数据类型。

有的数据经过转型运算后,精度会丢失,而有的会更加精确,即精度低的转向精度高的,精度会更加精确,精度高的转向精度低的会丢失精度。

如图例:

ccd9633045d21a67f37611e64defffb6.png

10.运算符的优先级别

8620267c30839171ffcb28432853c9b4.png

b4521a721938ac18153e4e6f3236f329.png

d1358d4695d8660de2972cc1f6e682b2.png

ke洋

发布了4 篇原创文章 · 获赞 0 · 访问量 51

私信

关注

标签:JAVA,运算,结果,二进制,符号,运算符,自加

来源: https://blog.csdn.net/m0_46015143/article/details/104594259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值