栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 运算符

java中有一套全面 的运算符来操纵变量。

算术运算符(+,-,*,/)

赋值运算符(+= , -=, *=,/=,!=,>>=,<<=,%=)

位运算符(>>  , << , >>>,~)

逻辑运算符(&,&&,|,||,!)

条件运算符 三目运算符(y= a>b ? a:b)

在这里 一目运算符:++,--,~,!,-

算术运算符(+-*/)

算数运算符只进行简单的加减乘除,但是+号有很多作用,其一为连接字符串,其二为做加法运算

其三为连接 字符串与变量。

其余的-号也有两种 用法 其一为减法,其二表示负号,他的作用跟数学运算符一样。

除法运算,如果做除法的两个数都为整数 则相除的结果就是"商",如果其中一个为小数则相除的结果就是小数

 ++ ,--

++为自加一  --则为自减一

a++ 为  先运算再+    ++a 先加再执行。

a--,--a 同理

-  (负号)是 一目运算符,可以给值一个负数

总结:算数运算符的作用,和在数学中的作用相似。(+号多一个应用。除法法则有点区别)

                


赋值运算符

赋值运算符中 是算数运算和位运算   与等号 的合并,

例:

a+=b  <==> a=a+b  左边的值等于左右值相加

a-=b  <==> a =a-b 左边值等于左右两值相减

a*=b<==>a=a*b 左边值等于左右两边值相乘

a/=b<==>a=a/b左边值等于左右边值相除

a%=b <==>a=a%b  左边值等于左右两边相除取的余数

a<<=b <==>a=a<

a>>=b  <==>a=a>>b; 左边值等于a向左移动 b位 后 的值等于a

a^=b   <==>a=a^b

a&=b <==>a=a&b

a|=b  <==>a=a|b

总结 :这样写更简练,也很体现JAVA的强劲。

这样写左边的值等于两值进行对应法则运算后的值


位运算

位运算的符号: >>,<<,>>>;

>> 表示由左向右移动某个位数;

<< 表示由右向左移动 

>>> 表示无视符号由右向左移动

~   表示逐位取反,

其中数在做运算的时候要变成二进制再进行位的移动;

">>>"比较特殊他的作用是直接移动位数 不改变符号 其余的跟“>>”计算相似,但是最高位,

位 "&"或           位“|”于        位“^”   如果一个数进行计算必须转换为 二进制再进两数二进制的计算。

两数一般从左到右两两相对。

&: 所对的数 只有1&1=1    0&1= 0;  (只有 1&1=1,其余的都是 0) |: 只有   1|0= 1  1|1=1  其余的 都是  0;(也就是说只有一个数为1他就是1,只要都是0 才是 0) ^:  1&1=1  0&0=1  1&0=0(两个数相同为 1  不相同为0)

例1;

int a=125,b=0;

b=a>>2;

System .out.println(b);

输出结果位 31;

解释:因为位运算进行时要把该运算的数进行二进制转换再进行移动

比如 a=125 二进制   为 0111 1101

输出结果为31 的二进制为 0001 1111

125-->31 在二进制中从左向右移动了2位

例2;

int a=-125,b=0;

b=a>>2;

System.out.println(b);

解释:输出结果为1073741792。

125的二进制 0111 1101;

因为这是int类型有32位-125二进制为  1111 1111 1111 1111 1111 1000 0011 补码(是源码的相反数再+1);

整体右移动的位数还无视符号所以 -125移动后为  0011  1111 1111  1111 1111 1111 1110  0000

结果与输出结果相同

例3;

public static void  main(String[]  args){

System.out.priintln(5&3);

System .out .println(5|3);

System .out .println(5^3);

}

输出结果为:1,7,6

解释: 5的二进制为:0101

            3的二进制为   0011

根据法则  0&0=0,1&0=0,0&1=0 1&1=1;结果就是 0001=1

                第二个  0|0=0    1|0 = 1  0|1 = 1  1|1=1 结果为 0111=7

                第三个  0|0=0 ; 1|0=1 0|1=1  1|1=0  结果为  0110 =6


逻辑运算

!   单目运算符              

&,&&  双目运算符‘

| ,||, 双目运算符

^异或   双目运算符

| (逻辑或),||(短路或)          

其中一个为真则是真 (真值判断相同)

区别 :第一个数如果为TRUE 则 | 会继续运行   ||不会继续运行。

例:

  public static void main(String[] args) {
        int a=10;
        int b=5;
        if (a>0||(b++)>5){//因为 |只运行第一个数如果为真则直接输出。
            System.out.println(b);
        }
        if(a>0|(b++)>5){//因为 |都运行 所以()里都运行再输出b
            System.out.println(b);
        }

    }

}

结果为 5 6

&(逻辑与)&&(短路与)

两个都为真则是真 ,只要有一个假就是假         如果有一个是假的就是假的

区别 :a&b  左边的不管真假 右边都需要算

a&&b 左边为假 右边不需要算 if  a=false   b就不需要计算

例2;

  public static void main(String[] args) {
        int a=10;
        int b=5;
        if (a>20&&(b++)<6){//因为 |只运行第一个数如果为真则直接输出。
            System.out.println(b);
        }
        if(a>20&(b++)<6){//因为 |都运行 所以()里都运行再输出b
            System.out.println(b);
        }

    }

}

结果是    4   5

解释:再第一个if语句中  a=10   a>20为 false   则判断第二个条件(b++)<6因为b++先进行运算再++又因为&&判断 为true 就直接运行 if 后的 语句 不进行计算 所以就直接输出b的值

注意:一定要熟记运算规则。

^异或    两个值不同则为真 ,两个值相同则是假。 !(取反) 单目运算符 只计算单个数值的相反数。如果是false 他就等于 true。 条件运算符

y=a>b ? a:b;

如果a>b 为真   则是a的值

如果a>b为假  则是b的值

最后赋值给y

?后的值是选择输出值,输出的值是数字也可以是字符串“”

看数据类型!!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号