JAVA基础3---运算符大全
Java中的运算符有以下种类:算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他的运算符
现在假设定义 int A = 10,B = 5;
一、算术运算符
运算符 | 描述 | 案例 |
+ | 等同于数学中的加号 | A+B=15 |
- | 等同于数学中的减号 | A-B = 5 |
* | 等同于数学中的乘号 | A*B = 50 |
/ | 除号,结果的类型和操作数类型有关,详情如下Demo | A/B=2 |
% | 取余,左边除以右边数取余数,只可用于整数型,浮点型会有精度问题,详情如下Demo | A%B=0 |
++ | 自增,相当于操作数的值加1 | A++或++A=11 |
-- | 自减,相当于操作数的值减1 | A--或--A=9 |
详细Demo如下:
public static void operatorTest() {
int A = 10, B = 5, C = 3, A1 = 10, A2 = 10, A3 = 10, A4 = 10;// 定义整型
float D = 10.2F, E = 2.5F;// 定义两个浮点型 System.out.println("A+B = " + (A + B));// 15(整型)
System.out.println("A-B = " + (A - B));// 5(整型)
System.out.println("A*B = " + (A * B));// 50(整型)
System.out.println("A/B = " + (A / B));// 2(整型)
System.out.println("A/C = " + (A / C));// 3(整型)
System.out.println("A%B = " + (A % B));// 0(整型)
System.out.println("A%C = " + (A % C));// 1(整型)
System.out.println("D/B = " + (D / B));// 2.04(浮点型)
System.out.println("D%B = " + (D % B));// 0.19999981(浮点型,精度缺失)
System.out.println("A/E = " + (A / E));// 4.0(浮点型)
System.out.println("A%E = " + (A % E));// 0.0(能除以尽,则不会有精度问题) System.out.println("A++ = " + (A1++));// 10 先取值再做自增操作,取的A1的值为10,语句结束之后A1=11
System.out.println("++A = " + (++A2));// 11 先做自增操作再取值,取的A2的值为11,语句结束之后A2=11
System.out.println("A-- = " + (A3--));// 10 先做自增操作再取值,取的A2的值为10,语句结束之后A2=9
System.out.println("--A = " + (--A4));// 9 先做自增操作再取值,取的A2的值为9,语句结束之后A2=9
}
关于A++和++A的区别的详细解析,可以参考另一篇文章:JAVA基础2---深度解析A++和++A的区别
二、关系运算符
运算符 | 描述 | 案例 |
> | 判断左边操作数是否大于右边操作数,是则为true,否则为false | A>B = true |
< | 判断左边操作数是否小于右边操作数,是则为true,否则为false | A<B = false |
>= | 判断左边操作数是否大于或等于右边操作数,是则为true,否则为false | A>=B = true |
<= | 判断左边操作数是否小于或等于右边操作数,是则为true,否则为false | A<=B = false |
== | 判断左边操作数是否等于右边操作数,是则为true,否则为false | A==B = fasle |
!= | 判断左边操作数是否不等于右边操作数,是则为true,否则为false | A!=B = true |
详细Demo如下:
public static void operatorTest2() {
int A = 10, B = 5;
System.out.println("A > B = " + (A > B));// A > B = true
System.out.println("A < B = " + (A < B));// A < B = false
System.out.println("A >= B = " + (A >= B));//A >= B = true
System.out.println("A <= B = " + (A <= B));//A <= B = false
System.out.println("A == B = " + (A == B));//A == B = false
System.out.println("A != B = " + (A != B));//A != B = true
}
需要注意的是,关系运算符的两边的操作数都必须是数值类型,如果是对象类型之间进行比较,需要自定义对象之间比较的规则。
如果两个对象类型使用了上面的运算符,则会报错提示运算符不支持改类型,而== 和 !=运算符不会报错,因为==和!=会比较两个对象的内存地址,而内存地址也是数值类型;
三、位运算符
位运算符用于JAVA的int、long、short、char和byte类型,按位进行运算,A =10和B=5对应的二进制格式如下
A = 0000 1010
B = 0000 0101
运算符 | 描述 | 案例 |
& | 与运算,对应位置都为1则结果为1,否则结果为0 | A&B=0000 0000,即A&B=0 |
| | 或运算,对应位置都为0则结果为0,否则结果为1 | A|B=0000 1111 ,即A|B =15 |
^ | 异或运算,对应位置值相同则为0,否则为1 | A^B=0000 1111,即A^B=15 |
~ | 非运算,将操作数每个位置进行翻转,即0变为1,1变为0 | ~A = 1111 0101,即~A=-11; ~B = 1111 1010,即~B = -6 |
<< | 位左移运算,左操作数按位左移右操作数指定的位数,如A<<B,则A按位左移5位;B<<A,则B按位左移10位 | A<<B = 0001 0100 0000,即A<<B = 320 |
>> | 位右移运算,左操作数按位右移右操作数指定的位数,如A<<B,则A按位右移5位;B<<A,则B按位右移10位 | A>>B = 0000 0000 即A >> B = 0 |
>>> | 位右移补零运算,左操作数按位右移右操作数指定的位数,移动得到的空位补零,和>>差不多 | A>>>B = 0000 0000 即A >> B = 0 |
详细Demo如下:
public static void operatorTest3() {
int A = 50;// 0011 0010
int B = 15;// 0000 1111
int C = 3;
System.out.println("A & B = " + (A & B));// 0000 0010 = 2
System.out.println("A | B = " + (A | B));// 0011 1111 = 63
System.out.println("A ^ B = " + (A ^ B));// 0011 1101 = 61
System.out.println("~ A = " + (~A));// 1100 1101 = -51
System.out.println("~ B = " + (~B));// 1111 0000 = -16
System.out.println("A << C = " + (A << C));// 0001 1001 0000 = 400
System.out.println("A >> C = " + (A >> C)); // 0000 0110 = 6
System.out.println("A >>> C = " + (A >>> C));// 0000 0110 = 6
}
对于>>和>>>区别,如果左操作数为正数的话,两运算符计算结果相同,若为负数的话,则结果不一样;
>>是表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>>表示无符号右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
四、逻辑运算符
定义 boolean A = true,boolean B=false
运算符 | 描述 | 案例 |
&& | 逻辑与运算符,当两个操作数都为true,则结果为true,否则为false | A&&B = false |
|| | 逻辑或运算符,当两个操作数都为false,则结果为false,否则为true | A||B = true |
! | 逻辑非运算符,当操作数为true,则结果为false,当操作数为false,则结果为true | !A = false;!B=true |
逻辑与 &&具有短路功能,具体参考结尾Tips
五、赋值运算符
运算符 |
描述 | 案例 |
= | 基本赋值,将右操作数赋值给左边操作数 | A=B,将B的值赋值给A,结果A=5 |
+= | 加和赋值,将左操作数加上右操作数的值再赋值给左操作数 | A+=B相当于A=A+B,结果为A=15 |
-= | 减和赋值,将左操作数减上右操作数的值再赋值给左操作数 | A-=B相当于A=A-B,结果A=5 |
*= | 乘和赋值,将左操作数乘以右操作数的值再赋值给左操作数 | A*=B相当于A=A*B,结果为A=50 |
/= | 除和赋值,将左操作数除以右操作数的值再赋值给左操作数 | A/=B相当于A=A/B,结果为A=2 |
%= | 取余和赋值,将左操作数取余右操作数的值再赋值给左操作数 | A%=B相当于A=A%B,结果为0 |
<<= | 左移位赋值,左操作数左移右操作数指定位数后赋值给左操作数 | A<<=B 相当于A=A<<B,结果为320 |
>>= | 右移位赋值,左操作数右移右操作数指定位数后赋值给左操作数 | A>>=B 相当于A=A>>B ,结果为0 |
&= | 位与赋值,左操作数位与运算右操作数再赋值给左操作数 | A&=B 相当于A=A&B,结果为0 |
|= | 位或赋值,左操作数位或运算右操作数再赋值给左操作数 | A|=B 相当于A=A|B,结果为15 |
^= | 位异或赋值,左操作数位异或运算右操作数再赋值给左操作数 | A^=B 相当于A=A^B,结果为15 |
六、其他运算符
条件运算符:条件 ? true_value: false_value
当条件的结果为true时,则表达式的值为true_value,当条件的结果为false时,则表达式的值为false_value,如下Demo:
public static void demo1() {
int A = 10, B = 5;
int C = A > B ? A : B;// 当A大于B时,取值为A,否则取B
int D = A < B ? A : B;// 当A小于B时,取值为A,否则取B
System.out.println("C = " + C);// 结果为10
System.out.println("D = " + D);// 结果为5
}
Tips:
1. &&具有短路功能,当第一个操作数的结果为false,则第二个操作数就不再判断了,如下Demo:
public static void demo1() {
int A = 10;
int B = 10;
boolean flag1 = (A > 5 && ++A >5);
boolean flag2 = (B < 5 && ++B >5);
System.out.println("没有短路: A="+A);//结果为 A = 11
System.out.println("短路之后:"+"B="+B);//结果为 B = 10
}
因为A>5=true,所以继续执行 ++A>5;而B < 5=false,第二个操作就不再执行,所以 ++B >5就不再执行;
JAVA基础3---运算符大全的更多相关文章
- Java基础-比较运算符Compare Operators
Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...
- Java基础-算术运算符(Arithmetic Operators)
Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...
- Java基础-位运算符Bitwise Operators
Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...
- 软帝学院:一万字的Java基础知识总结大全(实用)
Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨 ...
- Java基础(运算符)
Java中的运算符: 算术运算符:+ - * / % ++ -- %运算符叫取模:它就是取余的例如:43%7=1 其他的都是和数学里的运算符一样(不过在字符串中如果是两个字符串 ...
- Java基础之 运算符
前言:Java内功心法之运算符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,J ...
- java 基础one ---运算符and流程控制
首先java这个了解下java的基础 首先java文件都是以.java结尾的 然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...
- 恶补java基础 位运算符
以前不知道在哪看过别人写博客里的一句话 “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法 hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...
- java基础2_运算符,选择语句
算数运算符 + 相加 字符串的连接 正数 - 相减 负数 * 相乘 / 相除 10 / 3 ==> 3 两个操作数中精度最高的是int 结果也是int % ...
随机推荐
- Asp.net中"正在中止线程"错误解决方法
项目中出现“正在中止线程”问题,百度后台发现,都是因为用到Response.End.Response.Redirect 或 Server.Transfer 方法. 原因: Response.End 方 ...
- (5.1)sql server系统数据库
关键词:mssql系统数据库,sql server系统数据库,tempdb的作用 master:它包含一个系统表集合,是整个实例的中央存储库,维护登录账户,其他数据库,文件分布,系统配置设置,磁盘空间 ...
- vc让界面保持最上层
vc让界面保持最上层.事实上就一个函数就ok了, ::SetWindowPos(AfxGetMainWnd()->m_hWnd,HWND_TOPMOST,-1,-1,-1,-1,0);
- MySQL 5.7 新特性大全和未来展望
引用 美图公司数据库高级 DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计.之前在「高可用架构」发表的&l ...
- word2vec 评测 sg=0 sg=1 size=100 window=3
1.评价sg=0与sg=1的区别 结果原文:sg_difference.txt sg=0 sg=1 绑定 1 关联 ...
- 2019.03.23 Cookie
Cookie 曲奇饼干 哈哈哈.通俗的将,应该是发票. 因为http是无状态操作 当你访问服务器之后,应该会给你响应发票Cookie记录你访问了什么东西 便于下次再来查找吧,Cookie有时间的限 ...
- 23-Python3 File
''' file(文件)方法 ''' #open()对象 pass #file对象 ##file.close():关闭文件,关闭后不能再进行读写操作 fo1 = open('/Users/ligaij ...
- js模拟栈---汉诺塔
var Stack = (function(){ var items = new WeakMap(); //先入后出,后入先出 class Stack{ constructor(){ items.se ...
- (转载)深入了解MyBatis参数
原文地址:http://blog.csdn.net/isea533/article/details/44002219 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Pa ...
- unity3d-多媒体与网络
1.音乐 unity3d 共支持4种音乐的格式文件 aiff:适用于较短的音乐文件,可用于游戏音效 wav:适用于较短的音乐文件,可用于游戏音效 mp3:适用于较长的音乐文件,可用于游戏音乐 ogg: ...