现在,我们已经学会了如何声明和初始化变量,但你可能想知道如何操作它们。运算符是对一个,两个或三个操作数执行特定操作并返回结果的特殊符号。下表列出了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. delphi 在字符串中输出单引号'

    在程序代码里,用单引号 引起来的两个单引号,经过编译后是一个单引号.'''ok''':编译后表示'ok';

  2. cnVCL的安装

    cnVCL是cnpack组件中的不可视组件库,里面包含很多有用的组件,网址:http://www.cnpack.org/showdetail.php?id=739&lang=zh-cn 安装步 ...

  3. java学习笔记—HttpServletResponse(21)

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, ...

  4. Java - io输入输出流 --转换流

    转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

  5. 动态代理(JDK实现)

    JDK动态代理,针对目标对象的接口进行代理 ,动态生成接口的实现类 !(必须有接口) public class ProxyDemo { //通过方法的返回值得到代理对象            方法参数 ...

  6. LOJ#6048. 「雅礼集训 2017 Day10」数列(线段树)

    题面 传送门 题解 我的做法似乎非常复杂啊-- 首先最长上升子序列长度就等于把它反过来再接到前面求一遍,比方说把\(2134\)变成\(43122134\),实际上变化之后的求一个最长上升子序列和方案 ...

  7. Qt5学习笔记(控件)

    上面的程序仅仅可以显示一个 大概 的界面,对其进行单击等操作,界面仅有一些简单的反应,对应的程序不能得知界面有什么改变(是否进行单击选择,文本框中是否有文字输入) 下面对程序进行完善. T05Cont ...

  8. Python str转化成数字

    原地址 http://www.cnblogs.com/wuxiangli/p/6046800.html   int(x [,base ])         将x转换为一个整数     long(x [ ...

  9. [ActionScript 3.0] 幻灯片效果实例

    package com.fylibs.components.effects { import com.fylibs.utils.LoaderQueues; import com.tweener.tra ...

  10. 理解 atime,ctime,mtime (下)

    话不多说,开始下篇. # 前言 通过 "理解 atime,ctime,mtime (上)" 我们已经知道了atime 是文件访问时间:ctime是文件权限改变时间:mtime是文件 ...