现在,我们已经学会了如何声明和初始化变量,但你可能想知道如何操作它们。运算符是对一个,两个或三个操作数执行特定操作并返回结果的特殊符号。下表列出了Java中的运算符:

  表格中的运算符是按照从上到下优先级依次降低的顺序列出的。优先级较高的运算符在优先级相对较低的运算符之前进行求值。同一行中的运算符具有相同的优先级。根据操作数个数的不同,可将运算符分为一元、二元和三元运算符。在二元运算符中,除了赋值运算符是按照从右到左的顺序进行运算,其余所有的二元运算符都是按照从左到右的顺序进行运算的。下面依次对这些运算符进行介绍。

1.算术运算符

  算术运算符用来进行基本的算术运算,包括+、-、*、/和%。其中,+、-、*、/代表最基本的四则运算,但是要注意的是,当参与除法运算的两个操作数都是整数时,代表整数除法,例如7/2=3;当至少有一个操作数是浮点数时,代表浮点除法,例如7.0/2=7/2.0=7.0/2.0=3.5。%表示整数的求余(或者称为取模)操作,例如7%2=1。

2.关系运算符

  关系运算符用来判断左右表达式是否满足某种关系,包括<、>、<=、>=、==和!=,分别表示小于、大于、小于等于、大于等于、等于和不等于。关系运算符的结果是boolean类型,例如3<5的结果是true,2==4的结果是false。

3.逻辑运算符

  逻辑运算符用来对两个布尔值进行运算,包括&&、||和!,分别表示逻辑与、逻辑或和逻辑非。&&和||是按照“短路”的方式来进行运算的,即如果左边的操作数已经能够确定表达式的值,那么右边的操作数就不会计算,例如x!=0&&32/x>4,如果x等于0,那么右边的表达式就不会进行运算,也就不会产生错误。逻辑非用来将后面的布尔值取反,例如3<2的结果是false,那么!3<2的结果就是true。

4.自增和自减运算符

  自增运算符++和自减运算符--用来对当前变量加1或减1。++和--只能作用于变量,不能作用于表达式或字面量,例如a++是正确的,(a+1)++和2++都是错误的。++和--既可以放在变量左边,也可以放在变量右边,++a表达式的结果是加1后a的值,a++表达式的结果是加1前a的值。当然无论是++a还是a++,最后a的值都会加1。

5.位运算符

  位运算符可以直接对整数在内存中的二进制位进行操作,包括按位与&、按位或|、按位异或^、按位取反~、左移<<、右移>>和无符号右移>>>。左移会用0填充低位,右移会用符号位填充高位,无符号右移用0填充高位。移位运算符的右操作数需要完成模32的运算(如果左操作数时long类型,则需要模64),例如1<<35等价于1<<3。
  应用在布尔值上时,&和|也会得到布尔值。不过不同于&&和||,&和|在运算时不采用“短路”的方式,也就是说,无论左边的操作数是true还是false,右边都会进行运算。

6.赋值运算符

  赋值运算符用来将一个值指定给一个变量,例如a=1。赋值运算符左边一定是变量,不能是表达式或字面量。将=和算术运算符或位运算符(~除外)结合,可以得到增强型的赋值运算符+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=,其作用是左边的变量先和右边的操作数进行运算,然后再赋值给左边的变量,例如a+=3等价于a=a+3。

7.其他运算符

  除了上面提到的运算符外,还有一元加(+)、一元减(-)和唯一的一个三元运算符(?:)。一元加作用于数字字面量时,用于显式地说明该字面量是正数,例如+1表示正1;作用于表达式或变量时,写与不写没有区别。一元减用于计算它后面地操作数地相反数。对于三元运算符,如果问号前的表达式为true,那么整个表达式的结果就是第一个表达式的结果;否则结果为第二个表达式的结果。例如,1<2?3:4的结果是3,1>2?3:4的结果是4。

Java基础教程(7)--运算符的更多相关文章

  1. Java基础教程(18)--继承

    一.继承的概念   继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...

  2. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  3. Java基础-字符串连接运算符String link operator

    Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...

  4. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  5. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  6. Java基础教程(5)--变量

    一.变量 1.变量的定义   正如上一篇教程<Java基础教程(4)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...

  7. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...

  8. Java基础教程:泛型基础

    Java基础教程:泛型基础 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚 ...

  9. Java基础教程:多线程基础(1)——基础操作

    Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...

随机推荐

  1. KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  2. iOS没你想的那么安全?

    iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以更容易被攻击. 任何系统都会有木马病毒的产生,不存在绝对的安全,iOS应用由于直接运行在用户的手机上,而不是运行在后台服务器上,所以 ...

  3. 第四天,同步和异常数据存储到mysql,item loader方法

    github对应代码:伯乐在线文章爬取     一. 普通插入方法 1. 连接到我的阿里云,用户名是test1,然后在navicat中新建数据库

  4. [Alpha]Scrum Meeting#8

    github 本次会议项目由PM召开,时间为4月10日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写每日例会报告 撰写每日例会报告 SiMrua 优化模型速度(iss ...

  5. VUE源代码调试方法

    前两条出自: https://link.zhihu.com/?target=http%3A//www.orzzone.com/vuejs-project-debug.html https://www. ...

  6. loj 6433 「PKUSC2018」最大前缀和 题解【DP】【枚举】【二进制】【排列组合】

    这是个什么集合DP啊- 想过枚举断点但是不会处理接下来的问题了- 我好菜啊 题目描述 小 C 是一个算法竞赛爱好者,有一天小 C 遇到了一个非常难的问题:求一个序列的最大子段和. 但是小 C 并不会做 ...

  7. OpenERP 疑问之一

    def _get_send_amount(self,cr,uid,ids,name,args,context=None): res={} MRP={} lines = self.browse(cr,u ...

  8. Mac OS 10.12使用U盘重装(转)

    OS X Capitan和macOS Sierra的安装方式和下载系统的方法都是一致的,下面是OS X Capitan的安装方法: 一.准备工作: 准备一个8GB或者8G以上容量的U盘 确保里面的数据 ...

  9. FAQ of db2fmp messages in the db2diag.log

    http://www-01.ibm.com/support/docview.wss?uid=swg21470035 Technote (FAQ) Question What do these mess ...

  10. (转)MySQL多源复制

    原文:https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html MySQL多源复制概述 MySQL多源复制使复制从接受 ...