Java基础教程(7)--运算符
现在,我们已经学会了如何声明和初始化变量,但你可能想知道如何操作它们。运算符是对一个,两个或三个操作数执行特定操作并返回结果的特殊符号。下表列出了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)--运算符的更多相关文章
- Java基础教程(18)--继承
一.继承的概念 继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...
- Java基础教程(12)--深入理解类
一.方法的返回值 当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...
- Java基础-字符串连接运算符String link operator
Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...
- Java基础教程:注解
Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...
- Java基础教程:网络编程
Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...
- Java基础教程(5)--变量
一.变量 1.变量的定义 正如上一篇教程<Java基础教程(4)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...
- Java基础教程:Lambda表达式
Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...
- Java基础教程:泛型基础
Java基础教程:泛型基础 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
随机推荐
- NOIP2015BLOCKADE c++ 代码
#include<algorithm> #include<fstream> #include<functional> #include<iostream> ...
- java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)
在JavaWeb中的监听器分类 在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext 监听者 被监听者 监听到事件对象 H ...
- datatime模块
https://www.cnblogs.com/cindy-cindy/p/6720196.html
- Django的views视图系统
老师的博客:http://www.cnblogs.com/liwenzhou/articles/8305104.html 以看老师的博客为主 一个视图函数(类),简称视图,是一个简单的Python 函 ...
- “全栈2019”Java第九十一章:内部类具有多态特性吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- BruteXSS(汉化版)
BruteXSS是一个非常强大和快速的跨站点脚本暴力注入.它用于暴力注入一个参数.该BruteXSS从指定的词库加载多种有效载荷进行注入并且使用指定的载荷和扫描检查这些参数很容易受到XSS漏洞.得益于 ...
- 基于.NET的开源搜索引擎-DotLucene(2)
NLucene是将 Lucene 从 Java 移植到 .NET 的一个 SourceForge 项目,它从 Lucene 1.2 版本转化而来. Lucene.Net因为 NLucene 项目到20 ...
- jquery源码解析:jQuery队列操作queue方法实现的原理
我们先来看一下jQuery中有关队列操作的方法集: 从上图可以看出,既有静态方法,又有实例方法.queue方法,相当于数组中的push操作.dequeue相当于数组的shift操作.举个例子: fun ...
- Java中类变量和实例变量的初始化
1. 类变量和实例变量 类变量即类成员变量中的静态变量,它们可以通过类名来直接访问. 实例变量是类成员变量中的非静态变量,只有在实例化对象之后通过对象来访问. 2. 空间分配的时间不同 类变量是在类加 ...
- div实现高度自适应的textarea
textarea使我们常常使用的一种表单形式,多用于大段文字的输入,大多数情况下,textarea都是可以满足需求的,但是当我们希望这个输入框高度自适应的时候,textarea就很难做到了. ok,主 ...