什么是是运算符

运算符:用于数据运算的符号,运算是一种处理。(注:浮点型数据(float、double)进行运算会出现精度丢失的情况)

运算符大致可分为以下六种:

一、算术运算符:+、-、*、/、%、++、--

这里只针对于在java中有着特殊含义的算术运算符进行删除,乘、除等与日常生活中概念一致的运算符不再特殊说明

1、+(加号)

在Java中+具有三种含义:

①数学意义上的加法运算;

②正数;

③字符串拼接;

2、%(求余,取模)

n%m//运算结果为n除以m除不尽的部分,结果取值范围为[0,m);

//几行关于被除数与除数取正/负数,其结果正/负的代码

System.out.println("6.4%2.0="+(6.4%2.0));//0.4

System.out.println("-6.4%2.0="+(-6.4%2.0));// -0.4

System.out.println("6.4%(-2.0)="+(6.4%(-2.0)));//0.4

System.out.println("-6.4%(-2.0)="+(-6.4%(-2.0)));//-0.4
// 根据以上代码,我们可以得知:余数是被除数的一部分,余数的正负取决于被除数

3、++(自增)、--(自减):

关于自增与自减,需牢记以下两段话

++在前,先自增,后运算;

++在后,先运算,后自增;

int a=1;
a++;//等价于a=a+1;完全等价于a=(a的类型)(a+1) byte b=1;
b++;//b++;完全等价于b=(b的类型)(b+1);

二、赋值运算符:=、+=、-=、/=、%=、*=...

int  a=1,b=2;
a+=b;//等价于a=a+b;完全等价于(a的类型)(a+b); byte c=1,d=2;
c+=d;//c+=d完全等价于:c=(c的类型)(c+d);

赋值运算符(=)成功赋值的四种情况:

1、直接赋值:左右类型一致

2、左边精度高于右边精度(自动类型转换情况1)

3、左边是byte/short/char右边是int常量值(自动类型转换情况2)

4、强制类型转换:低精度变量=(低精度变量的类型)高精度数据

三、比较运算符:>、>=、<、<=、==、!=

比较运算符的结果是boolean(true/false)类型的值

在java中有着特殊含义的比较运算符:

==(恒等号)判断两边的值是不是相等

!=(不等号)判断两边的值是不是不相等

四、逻辑运算符:&、&&、|、||、^、!

逻辑运算符操作boolean型数据,结果也是boolean类型的数据

&(单与)、&&(双与):两边只要有一个false结果就是false

|(单或)、||(双或):两边只要有一个true结果就是true

^(异或):两边不同则为true两边相同则为false

!(取反、非)

&&和&区别:

&&代表着逻辑运算符的双与,&代表着逻辑运算符的单与和位运算符的单与;

相同之处:作为逻辑运算符时:&&和&的结果一样(两边只要有一个false结果就是false)

不同之处:

1、&可作为位运算符(位运算符操作数字的二进制)

2、&&存在逻辑短路的现象,如A&&B当通过A就能知道结果时B就不再执行直接给出结果

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

位运算符操作的是整数的二进制,0为false,1为true;

(&)运算时相同位之间实质上就是两个boolean值的运算,其判别与逻辑运算中的与相同,只要有一位为0其结果即为0

(|)运算与与运算相似,与逻辑运算中的或判别相同

异或(^)运算时,对应位数的值相同则为0,不同则为1

取反(~)运算,0、1互换

<<:左移几位就乘以几次2;

>>:右移几位就除以几次2;

>>>:右移零填充

六、三元运算符:boolean表达式?值1:值2

如果boolean表达式结果是true则取值1,反之取值2;

运算后结果的数据类型

运算后结果的类型遵从以下两个原则:

1、byte、short、char不能直接参加运算,编译器会自动将它们提升为int;(在前面加上若干个字节的0)

2、运算后的结果数据类型取决于参与运算的精度最高的数据类型;

最新文章

  1. 消灭textarea中的神秘空格
  2. python库requests登录zhihu
  3. ajax再接触
  4. wikioi 1083 Cantor表
  5. FFT(快速傅立叶算法 for java)
  6. Vim 快捷键整理
  7. 发现一款移动web端远程调试工具weinre , 哈哈!
  8. 字符串(扩展KMP):HDU 4333 Revolving Digits
  9. 【转】sublime text 2 中文乱码解决办法
  10. CentOS 6.3 安装 samba 共享(转)
  11. 搜索广告与广告网络Demand技术-搜索广告
  12. ACdream 1015 Double Kings
  13. 关于socket编程获取客户端地址笔记
  14. cocos2dx 中触摸事件分发一些解读
  15. A - 棋盘问题 POJ - 1321
  16. SQL去除空格、截取数据的方法:trim、substring
  17. vsftpd不支持目录软链接的解决办法
  18. Fluent动网格【5】:部件变形
  19. SPOJ SUBLEX Lexicographical Substring Search - 后缀数组
  20. Flash Memory 简介【转】

热门文章

  1. C#&#183;对于BOM头之完全解决方案
  2. Envoy:经过envoy代理后获取客户端真实IP
  3. [bug] jupyter notebook:服务在阿里云上启动,本地浏览器无法访问
  4. stressapptest工具
  5. SSM整合(ForestBlog为例)
  6. linux服务之NFS服务篇
  7. shell基础之exit,break,continue
  8. Java反射机制 之 获取类的 方法 和 属性(包括构造函数)(Day_06)
  9. Linux系统挂载NFS文件系统
  10. SparkCore之业务操作逻辑