JAVA 运算符

本文详细介绍了Java中的各种运算符,包括算术运算符、赋值运算符、位运算符、逻辑运算符以及条件运算符。通过实例解析了各运算符的工作原理和使用方法,帮助理解它们在编程中的作用。特别强调了加法运算符的多重含义和位运算符的二进制操作。此外,还探讨了赋值运算符的简写形式及其在简化代码中的作用。
摘要由CSDN通过智能技术生成

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<<b;  左边值等于a向右移动b位 的值等于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

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

看数据类型!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值