现在,我们已经学会了如何声明和初始化变量,但你可能想知道如何操作它们。运算符是对一个,两个或三个操作数执行特定操作并返回结果的特殊符号。下表列出了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. Mybatis框架 使用接口Mapper实现数据库的crud操作

    Mybatis的Mapper接口方式实现简单crud操作: 1.创建实体类 与数据库对应 我的实体类是<Student>   package com.hxzy.mybatis.pojo; ...

  2. BZOJ 1834--网络扩容(最大流&费用流)

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 3351  Solved: 1750[Submit ...

  3. Android面试经历2018

    本人14年7月份出来参加工作,至今工作将近4年的时间了,坐标是深圳.由于在目前的公司,感觉没什么成长,就想换一个公司.楼主已经在从实习到现在,已经换了三家公司了,所以这次出来的目标的100人以上,B轮 ...

  4. PHP性能优化四(业务逻辑中使用场景)

    php脚本性能,很多时候依赖于你的php版本.你的web server环境和你的代码的复杂度. Hoare曾经说过“过早优化是一切不幸的根源”.当你想要让你的网站更快运转的时候,你才应该去做优化的事情 ...

  5. 【表单验证】基于jQuery的高度灵活的表单验证(无UI)

    表单验证是前端开发过程中常见的一个需求,产品需求.业务逻辑的不同,表单验证的方式方法也有所区别.而最重要的是我们要清楚,表单验证的核心原则是--错误信息提示准确,并且尽可能少的打扰/干扰用户的输入和体 ...

  6. [CISCO] Telete/SSH 之 Port 绑定/端口安全

    [网络] Telete/SSH 之 Port 绑定/端口安全 一.前言 之前写完了网络] DHCP 之 Mac 绑定,CiSCO 交换机配置 SSH 登陆.这次我们再试试能不能挖的在深入些. (1) ...

  7. JavaScript创建对象的4种方法

    我们有很多种方式去构造一个对象.可以构造一个对象字面量,也可以和new前缀连用去调用一个构造器函数,或者可以使用Object.create方法去构造一个已经存在的对象的新实例,还可以调用任意一个会返回 ...

  8. canvas+js+面向对象的圆形封装

    效果: Circle.js /* 1. 封装属性: x, y r, fillStyle strokeStyle opacity 2.render */ function Circle(option) ...

  9. Welcome! This is the documentation for Python 3.6.8

    The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simp ...

  10. vue-cli3 chainWebpack配置,去除打包后文件的预加载prefetch/preload(已解决)

    //细节配置修改 chainWebpack: config => { console.log(config,'chainWebpack') // 移除 prefetch 插件 config.pl ...