标签:cells 算术 sys short world div 字符串 lse false
算术运算符 |
+ - * / |
基本运算 |
% |
模(取余数),算整除 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