Java的基本运算符
以下内容引用自http://wiki.jikexueyuan.com/project/java/basic-operators.html:
Java针对操控变量提供了一组丰富的运算符。可以将所有的Java运算符分为如下几组:
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
一、算术运算符
算术运算符在数学表达中的使用和它们在代数中的使用是相同的。下面的表格列举了算数运算符:
假设整体变量A有10个,变量B有20个,那么:
示例:
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法–在运算符的另一端增加 | A+B为30 |
- | 减法–将右侧的操作数从左侧的操作数中减去 | A-B为-10 |
* | 乘法–将运算符两端的值相乘 | A*B为200 |
/ | 除法–用右侧操作数除左侧操作数 | B/A为2 |
% | 余数-用右侧操作数除左侧操作数并返回余数 | B%A为0 |
++ | 增量–给操作数的值增加1 | B++为21 |
-- | 减量–给操作数的值减去1 | B--为19 |
二、关系运算符
以下是Java语言可支持的关系运算符。
假设变量A有10,变量B有 20,那么:
示例:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查双方操作数的值是否相等,如果相等那么条件为真 | (A==B) 不为真。 |
!= | 检查双方操作数的值是否相等,如果不相等那么条件为真 | (A!= B) 为真。 |
> | 检查左侧的操作数是否大于右侧的操作数,如果大于那么条件为真 | (A>B) 不为真。 |
< | 检查左侧的操作数是否小于右侧的操作数,如果小于那么条件为真 | (A<B) 为真。 |
>= | 检查左侧的操作数是够大于等于右侧的操作数,如果是那么条件为真 | (A>=B) 不为真。 |
<= | 检查左侧的操作数是否小于等于右侧的操作数,如果是那么条件为真 | (A<=B) 为真。 |
三、位运算符
Java定义了几种运算符,这类运算符可被运用于整数型式,long,int,short,char和byte。
位运算符作用于二进制系统间传输标准,并执行按位操作。假设如果a等于60;b等于13;现在在二进制型式下它们就如下所示:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
以下表格列举了位运算符:
假设整数变量A有60个,B有13个那么:
示例:
运算符 | 描述 | 例子 |
---|---|---|
& | 二进制AND运算符在结果上复制一位如果在双方操作数同时存在 | (A&B)为12,即0000 1100 |
| | 二进制OR运算符在结果上复制一位如果在任何一个操作数上存在 | (A|B) 为61,即0011 1101 |
^ | 二进制XOR运算符复制位,如果它是设置在一个操作数上而不是两个。 | (A^B) 为49, 即0011 0001 |
~ | 二进制补充运算符是一元的,b并有“翻转”位的影响 | (~A )为-61,由于是带符号的二进制数,那2的补位形式为1100 0011 |
<< | 二进制左移运算符。左侧操作数的值根据右侧操作数指定的位的数量移至左侧。 | A<<2为240 ,即1111 0000 |
>> | 二进制右移运算符。左侧操作数的值根据右侧操作数指定的位的数量移至右侧。 | A>>2 为15,即1111 |
>>> | 右移补零运算符。左侧操作数的值根据右侧操作数指定的位的数量移至右,并且转移的值用零补满。 | A>>>2为15,即0000 1111 |
四、逻辑运算符
下表格列举了逻辑运算符:
假设布尔数学体系变量A为真,B为假,那么:
示例:
运算符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。如果双方操作数都不为零,那么条件为真。 | (A&&B)为假. |
|| | 称为逻辑或运算符。如果双方操作数其中的任何一个都不为零,那么条件为真。 | (A||B)为真. |
! | 称为逻辑非运算符。用作翻转操作数的逻辑状态。如果一个条件为真,那么逻辑非运算符为假。 | !(A&&B)为真. |
五、赋值运算符
以下是由Java语言所支持的赋值运算符:
示例:
运算符 | 描述 | 例子 |
---|---|---|
= | 简单及运算符,将右侧操作数的值赋给左侧操作数 | C=A+B会将A+B的值赋给C |
+= | 增加及赋值运算符,它将右侧的操作数增加到左侧的操作数并且结果赋给左侧操作数 | C+=A同等于C=C+A |
-= | 减去及赋值运算符,它将右侧操作数从左侧操作数中减去并将结果赋给左侧操作数 | C-=A同等于C=C-A |
*= | 乘以及赋值运算符,它将右侧操作数与左侧相乘并将结果赋给左侧操作数 | C*=A同等于C=C*A |
/= | 除以及赋值运算符,它将右侧操作数除左侧操作数并将结果赋给左侧操作数 | C/=A同等于C=C/A |
%= | 系数及赋值运算符 需要系数运用两个操作数并且将结果赋给左侧操作数 | C%=A同等于C=C%A |
<<= | 左移和赋值运算符 | C<<=2同等于C=C<<2 |
>>= | 右移和赋值运算符 | C>>=2同等于C=C>>2 |
&= | 按位和赋值运算符 | C&=2同等于C=C&2 |
^= | 按位异或及赋值运算符 | C^=2同等于C=C^2 |
|= | 按位可兼或及赋值运算符 | C|=2同等于C=C|2 |
六、其它运算符
以下是由Java语言所支持的一些其他的运算符:
条件运算符/三目运算符(?:)
条件运算符同样也被称作为三元运算符。这种运算符由三个操作数组成,被用作评估布尔数学体系表达。这种运算符的目的是来决定哪些值应被赋予到变量上。这个运算符被写作如下:
variable x = (expression) ? value if true : value if false
以下是示例:
public class Test { public static void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ? 20: 30;
System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
//这样就会有如下结果:
Value of b is : 30
Value of b is : 20
Instanceof符
这种操作符只用于对象引用变量。这种操作符检查对象是否是独特类型(类型或接口类型)。Instanceof运算符写为:
( Object reference variable ) instanceof (class/interface type)
如果在运算符左侧的由变量所指代的对象为右侧的类型或接口类型通过IS-A检查,那么结果为真。以下是示例:
public class Test { public static void main(String args[]){
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println( result );
}
}
//这就会产出如下结果:
true
如果被比较的对象是与右边类型兼容的赋值,这种运算符仍会返回到真。以下是另一个例子:
class Vehicle {} public class Car extends Vehicle {
public static void main(String args[]){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result );
}
}
//这样将会产生以下的结果:
true
七、Java运算符的优先级
运算符优先级决定一个表达式里术语的分组。它影响着一个表达式如何求值。一定的运算符比其他运算符拥有更高的优先级;例如:乘法运算符比加法运算符有更高的优先级:
例如,x=7+3*2; 这里x被赋值为13,不是20,是因为运算符*比运算符+由更高的优先级, 所以它首先运算乘法3*2, 然后再加7。
这里,有着最高优先级的运算符在这个表格的最高一层,最低优先权的则出现在最底部。在一个表达式中,越高等级的优先权的运算符会最先被求值。
类 | 运算符 | 关联性 |
---|---|---|
后缀 | >() [] . (dot operator) | 从左到右 |
一元 | ++ - - ! ~ | 从右到左 |
乘法的 | * / % | 从左到右 |
加法的 | + - | 从左到右 |
移位 | >> >>> << | 从左到右 |
关系的 | > >= < <= | 从左到右 |
相等 | == != | 从左到右 |
位与 | & | 从左到右 |
位异或 | ^ | 从左到右 |
位或 | | | 从左到右 |
逻辑与 | && | 从左到右 |
逻辑或 | || | 从左到右 |
有条件的 | ?: | 从右到左 |
赋值 | = += -= *= /= %= >>= <<= &= ^== | 从右到左 |
测试工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test4
附录:
一、十进制与二进制互相转换:
参考:http://www.360doc.com/content/11/0308/14/5327079_99222581.shtml
1、十进制转二进制:
2、二进制转十进制:
Java的基本运算符的更多相关文章
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...
- JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符
// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- JAVA_SE基础——11.Java中的运算符
在程序设计中,运算符应用得十分广泛,通过运算符可以将两个变量进行任意运算.数学中的"+"."-"."*"."/"运算符同 ...
- Java基础(运算符)
Java中的运算符: 算术运算符:+ - * / % ++ -- %运算符叫取模:它就是取余的例如:43%7=1 其他的都是和数学里的运算符一样(不过在字符串中如果是两个字符串 ...
- JAVA 变量 数据类型 运算符 知识小结
---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...
- Java基础之 运算符
前言:Java内功心法之运算符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,J ...
- 电脑快捷键与JAVA关键字、运算符
电脑快捷键: Alt+ESC切换到上一个操作的窗口 Alt+F4关闭当前窗口 Print Screen截取当前全屏幕到剪切板 Alt+Print Screen截取当前窗口到剪切板 Alt+Shift在 ...
- Java基础-比较运算符Compare Operators
Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...
随机推荐
- InvocationTargetException异常的深入研究-servlet的setAttribute与getAttribute
在某项目中,前端jsp传入的用户id数据通过session域传入后台servlet进行处理的过程中,无意间出现了InvocationTargetException异常 前端部分代码如下:测试代码,非原 ...
- 小知识~VS2012的xamarin加载失败解决
1 由于Nuget版本过低导致的,工具->扩展和更新->在线更新->对nuget程序包程序器进行升级即可 错误代码: 错误 4 错误: 缺少来自类“NuGet.Visua ...
- (转)SpringMVC学习(九)——SpringMVC中实现文件上传
http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...
- uva11491 Erasing and Winning
边读入边处理 优化了速度一开始有想错了的地方.处理输入有点想用stringstream, 的问题在于他把字符串连续的数字作为一个整体,遇到空格才分开,所以不适用 #include<cstdio& ...
- autoHeight.vue 高度自适应
autoHeight.vue 高度自适应 <!-- * @description 自适应高度 * @fileName autoHeight.vue * @author 彭成刚 * @date 2 ...
- MFC不同分辨率和缩放下正常显示的方法
方法1:为了满足Windows操作系统上不同分辨率下的显示,我们在OnPaint中重绘.
- QT+信号有参数与无参数的实现+QT4和QT5在信号和槽使用上的区别
在QT5中,信号有参数和无参数 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QWidget> #include <QPushB ...
- 洛谷 P2858 奶牛零食
https://www.luogu.org/problemnew/show/P2858 毫无疑问区间dp. ![区间dp入门] 我们定义dp[i][j]表示从i到j的最大收益,显然我们需要利用比较小的 ...
- 万能的搜索--之BFS(三)
接着(一)start (二)广度优先搜索(BFS) 广度优先搜索(又称宽度优先搜索算法)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. Dijkstra单源最短路径算法和Pri ...
- laravel使用总结(一)
安装 composer create-project laravel/laravel learnlaravel5 --prefer-dist v5.3.* 安装成功之后会自动生成一个key > ...