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---运算符大全的更多相关文章

  1. Java基础-比较运算符Compare Operators

    Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...

  2. Java基础-算术运算符(Arithmetic Operators)

    Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...

  3. Java基础-位运算符Bitwise Operators

    Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...

  4. 软帝学院:一万字的Java基础知识总结大全(实用)

    Java基础总结大全(实用) 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨 ...

  5. Java基础(运算符)

    Java中的运算符: 算术运算符:+  -  *  /   %    ++     -- %运算符叫取模:它就是取余的例如:43%7=1 其他的都是和数学里的运算符一样(不过在字符串中如果是两个字符串 ...

  6. Java基础之 运算符

    前言:Java内功心法之运算符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,J ...

  7. java 基础one ---运算符and流程控制

    首先java这个了解下java的基础 首先java文件都是以.java结尾的  然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...

  8. 恶补java基础 位运算符

    以前不知道在哪看过别人写博客里的一句话  “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法  hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...

  9. java基础2_运算符,选择语句

    算数运算符  +    相加  字符串的连接  正数 -    相减  负数 *    相乘 /    相除    10 / 3 ==> 3  两个操作数中精度最高的是int 结果也是int % ...

随机推荐

  1. Oracle 11g服务详细介绍及哪些服务是必须开启的

    成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为: 1. Oracle ORCL VSS Writer Service: Oracle卷映射拷贝写入服务,VSS(Volume Sh ...

  2. OC通讯录选择封装

    ContactsService.h代码 #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> //block返回选 ...

  3. poi 实战代码---导出Excel(根据模板导出)

    /** * 导出excel * @param request * @param response * @return * @throws Exception */ @RequestMapping(&q ...

  4. 几种Robust方法对比

    1.Mean Absolute Deviation http://mathbits.com/MathBits/TISection/Statistics1/MAD.html 2.Median Absol ...

  5. case关联表查询

    select a.员工编号,b.`姓名`,b.`地址`,case when a.收入 is null then '没钱' when a.收入 < 2000 then '低收入'when a.收入 ...

  6. mapper映射文件不发布

    mapper映射文件不发布的问题:在pom.xml中配置,指定加载哪些资源 <resources> <resource> <directory>src/main/j ...

  7. [LeetCode] 559. Maximum Depth of N-ary Tree_Easy tag: DFS

    Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longe ...

  8. APP网络优化篇

    Android Addresses are cached for 600 seconds (10 minutes) by default. Failed lookups are cached for ...

  9. 移动端--touch事件与点透问题

    也来说说touch事件与点击穿透问题: http://blog.csdn.net/alex8046/article/details/52299785

  10. css3径向渐变

    #grad2 { height: 440px; width: 440px; border-radius: %; background: -webkit-radial-gradient(closest- ...