JAVA-基础知识-运算符

1、  运算符、操作符:

1)  算数运算符:+   - *    /    %   ++  --

A)      byte、short在运算时会自动提升为int

B)      double 和 float在计算过程中不保证精度,会产生舍入误差(绝大部分小数转换为二进制时无法精确表示)

C)      java是一门强类型的语言,只有一种类型的数据参与运算,结果还是原类型

D)     整数/0 -> ArithmeticException 。非0小数/0或者非0数字/0.0 ----à +/-Infinity

 0/0.0或 0.0/0 或0.0/0.0-> NaN --- Not a Number

E)      %取模运算符-7%3= -1     -25% 7 = -4    7%-3 = 1

整数取余规律:在做取余运算时,先忽略两个数字的符号,然后再算,看左边的数字的符号,左边为正,结果为正,左边为负,结果为负。 3.5% 2 = 1.5;  5.5%1.8 = 0.1         -5%1.7 = -1.6

F)      ++  --  : 放在前面和后面是有区别的++在前先自增在运算,++在后,先参与后续运算,再自增

G)     特殊类型:byte b = 3 ;    b++; 是可以的

【注意:字符可以参与运算,自动提升为int类型,结果是int类型,byte  short  char可以进行++  -- ,是可以保留原类型,类型不变,因为底层还是int来算的,然后在转换回来iadd,自增,  i2b,强转】

1)  赋值运算符: =    +=   -=    *=    /=   %=   位运算: &=   |=  ^=    <<=     >>=     >>>=

int i= 5;

i +=i -= i*= 5;         i = 5+(5-5*5);   //从左到右开始走

i += i-= i*= ++i;   i =5+(5-5*6)= -20;          i += i-= i* = i++;           i = -15;

i =5;    i= i++;   i=5;

除了= 外,其余运算符由于有了附属操作,要求变量先初始化才能运算

byte/ short 可以参与复合赋值运算【底层会强转,  i2b,强转

2)  关系运算符:>  < >=  <=   ==  !=

3)  逻辑运算符:用于运算逻辑值或者布尔值的

&与---and      | 或---or     非算路与非短路或                  !非---not

^异或 --- xor    t^t = f  f^t = t  t^f = t   f^f = f(两边相同为假,两边不同为真)

&&    ||  短路与和短路或               

【注意:】短路与和短路或中,短路或可以短路掉短路与。可是短路与不能短路掉短路或(和优先级没关系)

4)  位运算:注意:位运算针对整数的补码进行运算

任何数据在计算机内存中存储的是其补码,其运算也是针对其补码。正数原反补一致,负数补码是原码的基础上取反,最高位不变,然后再加1

byteb = 100 ;    b += 100;

int类型计算:00000000 00000000 0000000001100100

              00000000 00000000 00000000 01100100

int2byet转换结果:11001000            补码转原码  -----56

 

七个:&     |    ^      <<     >>   >>>     ~

&:将数据转化为补码,然后按位相与,再将结果转化为十进制显示{正数与任何数都是正数,负数与负数才是负数} 

小用途:用于判断奇偶性       数& 1 = 1-à奇数      数&1 = 0-à偶数

| :或运算:同上{负数或任何数都是负数,正数或正数才是正数}

^ :   异或:按位异或{ a ^ b ^a = b---符合交换律 = 0 ^ b = b}

用途:交换两个数的值

 异或法:i = i^j ; j=i^j;   j = i ^ j;  <------ > i^ =j ;  j ^= i ; i^ = j;(限制针对整数)

<<:左移运算符: 左移补0,高位舍弃 3<<2 = 12     5<<3 =40

【在一定范围内,向左移动几位,就乘以二的几次方,在左移位运算的时候,移动的位数,实际不是直接计算要移动的位数,而是先取余32,然后移动取余32后的余数----3<<32 = 3    <<(32%32) = 0移动0位】

>>:右移:补码右移,低位次舍弃,高位正补0,负补1【9>>2  = 2】右移正数越来越小,负数越移越大,最大到-1              右移几位,除以2的几次方

>>>无符号右移:右移补0,负数右移变正数

~:取反运算:不管高低位,一律0变1 , 1 变0          ~3  = -4

i取反,~ i = -i-1

int i= 3 ;   i = ~ i++;  //-4   先去取反运算 , i的值为 4 ,-4赋值给i

int I= 4; i+=i-=i*=~i++;      //40

5)  三元运算:         布尔表达式?结果1 : 结果2结果为true执行1,否则执行2

三元表达式,有具体的结果,有一个变量来接住最终的结果,前后两个结果类型一致或者能够转化double d = 5>3? ‘a’: 2.5*3.4;  //可以进行类型转化,可以形成嵌套

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值