码迷,mamicode.com
首页 > 其他好文 > 详细

运算符

时间:2019-06-15 15:26:26      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:cells   算术   sys   short   world   div   字符串   lse   false   

1.1 概述

算术运算符

+ - * /

基本运算

%

模(取余数),算整除   n%2结果0就是偶数

++     --

自增    自减

比较运算符

结果是boolean值

==

相等比较  1==2 结果是false

!=

不等比较  1!=2结果是true

逻辑运算符

&&    &  

结果是boolean值

逻辑与(短路与),两边同为真结果才为真

||       |  

结果是boolean值

逻辑或(短路或),两边只要有一个真结果就是真

+

字符串连接

非,非真是假,非假是真

三元运算符

?:

三项运算

1 ? 2 : 3

1是真取2,1是假取3

赋值运算符

=

赋值运算

+=    -=  

*=    /=

复合的赋值运算

a+=2;//a=a+2

整数不可以除以0回报异常

小数可以除以0  如2.0/0 值为Infinity  -2.0/0值为-Infinity Infinity是无穷大的意思

0.0/0 得到的结果是NAN  翻译过来是NOT A NUMBER

0/0.0结果也是NAN

操作%

最终结果值的正负号与左边的数一致

-2/-5  值为-2

++ 和-- 如果在操作数的后面,先赋值再自加自减 c=a++;

放在操作数的前面,先自增自减后赋值

a=2;

system.out.printf(a++);//2

a++;//3

byte c=127;

c++;//-128 强制类型转换

byte,short,char 再进行运算的时候会自动提升为Int类型 如下面

byte a=3;

a=a+3; //这个会报错           因为a+3结果提升为int类型 ,a是byte 那么类型大转小会报错

a+=3 //相当于a=a+3 但是此时byte a的结果是对的因为会默认加上强制类型转换

赋值运算符

=

变量没有连等定义

int a=b=c=3;这个是错的这个只有a是int类型的,其他的b,c不知道类型 

连等赋值

a=3;

int b=a+=a-=a*=5;

最后b等于-9

先带入 b=3+=3-=3*=5

赋值时从右往左走  

b=3+=3-=15 -->b=3+=-12-->b=-9

 

int b=a+=a-=a*=a++; 结果是-3   b=3+=3-=3*=3 -->b=3+=3-=9-->b=-3

int d=a++ + ++a; d等于8   3+5

变化的值只能影响右边的值/变量

扩展形式 +=、-=、*=、/=、%=、&=(按位与等)、|=(按位或等)、^=(按位异或等)、>>=(按位右移等)、<<=(按位左移等)、>>>=(无符号右移等)

 

比较运算符

==、>、<、>=、<=、!=

逻辑运算符

用于连接左右两边布尔值或者布尔表达式的符号

表达式:用于连接数据或者变量而且符合java语法的式子 a+b(算数表达式) a>b(比较表达式)

&(逻辑与) ,|(逻辑或),^(逻辑异或).!(逻辑非)

得到的结果是boolan

&表示并且的关系

单与&: 表达式1 & 表达式2  结果是true,两个表达式必须都是true

双与&&: 表达式1 && 表达式2  结果是true的话,两个表达式也都是true

区别:但是如果&&左边的布尔值是false就默认不执行右边即&&的短路

-- 短路与,如果表达式1的值是false,结果会造成表达式2的短路

|表示或者的关系

单或|:表达式1 | 表达式2 ,最终的结果要true,要求两个中有一个是true就可以

双或||:表达式1 || 表达式2,最终的结果要true,要求两个中有一个是true就可以

区别:但是如果||左边的布尔值是true就默认不执行右边即||的短路

--短路或,如果表达式1的值是true时,表达式2会被短路

||在&&的前面,如果||发生了短路就会把&&短路掉
如:

 

public class HellowWorld {
public static void main(String[] argv ) {
int a=1;
int b=2;
int c=3;
if(true&&(a++!=b)||(c-->b))
{
	
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

 

  结果是:223

public class HellowWorld {
public static void main(String[] argv ) {
int a=1;
int b=2;
int c=3;
if(true||(a++!=b)&&(c-->b))
{
    
}

System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}

结果是1 2 3

 

^ 异或相同为false 不同就是true

 

位运算

要进行位运算前提是把所有的数据转成二进制数据的补码

&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)、>>>(无符号右移

两边是值的话就是按位与  两边是布尔的话就是逻辑与

任意一个正数&任意一个数结果是正数

&:遇0则0

任意数&1==0 代表的就是偶数 ,&1==1代表的就是奇数

|:遇1则1,任意一个负数|任意一个数结果为负数 因为符号位是1

^:不同为1,相同为0

异或的扩展:a^b^a 和b^a^a 结果都是b 即一个数按位异或其它数两次得到的结果就是其本身

运算符

标签:cells   算术   sys   short   world   div   字符串   lse   false   

原文地址:https://www.cnblogs.com/xuwangqi/p/11026726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!