Java 六类运算符详解

 更新时间:2023年03月21日 17:00:32   作者:敬 之  
这篇文章主要介绍了Java 六类运算符,在 Java 语言中,运算符有算数运算符、关系运算符、逻辑运算符、赋值运算符、字符串连接运算符、条件运算符,感兴趣的朋友可以阅读一下

在 Java 语言中,运算符有算数运算符、关系运算符、逻辑运算符、赋值运算符、字符串连接运算符、条件运算符。

算数运算符

算数运算符是我们最常用的运算符,用于完成基本的算术运算。共包含以下几种,其中加减乘除不必多说,这里重点介绍后面几种。

算数运算符表示
+
-
*
/
取余%
自增++
自减--

 % 在 Java 中意为取模/取余,一个数取余另一个数,就意味着两数先做除法运算,然后将余数作为结果。如果余数为 0,那么这就是整除。

public static void main(String[] args) {
    System.out.println(3%2); //3取余2,商1余1
    System.out.println(8%2); //8取余2,商4余0,整除
    System.out.println(2%8); //2取余8,商0余2
}

Java 中小数也是可以取余的,但我们在实际应用当中仅需掌握整数间的取余即可。

++ 和 -- 分别为自增、自减 1,可以使用在变量之前,也可以使用在变量之后。这里需要注意自增自减运算符在单独使用和被使用时的计算方法是不同的。

单独使用就是整个语句只有变量和自增自减运算符。
被使用是指该语句除了自增自减还包含着其他的任何操作。

① 单独使用时。自增自减在变量的前或后效果都相同;

public static void main(String[] args) {
    int a=5,b=5;
    //单独使用
    a++; //相当于a=a+1
    ++b; //相当于b=b+1
    System.out.println(a); //6
    System.out.println(b); //6
}

② 被使用时。运算符在前,先将该变量自增/自减后再使用(使用的是经过运算后的变量);运算符在后,先使用完该变量,然后再将该变量进行自增/自减操作(使用的是未经运算的变量,即初始状态的变量)。如下以自增作为案例,自减原理相同:

  • ++a的值为a+1 运算符在前,先将变量 a 自增,然后使用自增后的结果 a+1 进行操作。
  • a++的值为a 运算符在后,先使用变量 a 进行操作,使用完之后再对 a 进行自增。
public static void main(String[] args) {
    int a=5,b=5;
    //被使用
    int c=a++; //运算符在后,先使用a的值赋给c,然后a再自增
    int d=++b; //运算符在前,先将b自增,然后将结果b+1赋值给d
    System.out.println(a); //6(到这步时a、b均已经完成了自增操作)
    System.out.println(b); //6
    System.out.println(c); //5
    System.out.println(d); //6
}

关系运算符

关系运算符主要是用来比较两者大小关系的。包含以下几种:

关系运算符表示
大于>
小于<
大于 或 等于>=
小于 或 等于<=
等于==
不等于!=

 关系运算符的运算结果必定只有布尔值,即成立 true 或 不成立 false。

public static void main(String[] args) {
    int a=5,b=10,c=5;
    System.out.println(c<b); //true
    System.out.println(b<c); //false
    System.out.println(a>=c); //true
    System.out.println(a!=c); //false
}

在 Java 语法的运算中,当不同运算符结合使用时,优先顺序也是不同的。算数运算符和关系运算符结合,采取“先算数再关系”的优先级。

public static void main(String[] args) {
    int a=5,b=10,c=5;
    System.out.println(a+c>20); //false,先计算a+c值为10,然后比较与20的关系
    System.out.println(a%2==0); //false,先计算a%2值为1,然后比较与0的关系
    System.out.println(a++>5); //false,先使用a对5进行比较,然后a自增1
    System.out.println(++a>5); //true,先将a自增1,然后比较与5的关系
}

逻辑运算符

逻辑运算符用于把语句连接成更复杂的复杂语句,共包含三种:

逻辑运算符表示
逻辑与&&
逻辑或
逻辑非!

逻辑运算是建立在关系运算基础之上的,所以它的运算结果也只有布尔值 true 或 false。

逻辑与 && 用于表达多个条件之间的并且关系,各个条件缺一不可,必须同时满足,所有条件均为真(true)整体才为真,只要有其中一个条件为假(false)则整体为假。

逻辑或 ‖ 用于表达多个条件之间的或者关系,无需同时满足,只要有其中一个条件为真则整体为真,只有当所有条件均为假时整体才为假。

逻辑非 ! 意为取反,非真则假,非假则真。

public static void main(String[] args) {
    int a=5,b=10,c=5;

    System.out.println(b>=a && b<c); //b>=a为true,b<c为false,true&&false=false
    System.out.println(b>=a && b>c); //b>=a为true,b>c为true,true&&true=true

    System.out.println(b>=a || b<c); //b>=a为true,b<c为false,true||false=true
    System.out.println(b<a || b<c); //b<a为false,b<c为false,false||false=false

    System.out.println(!(a>b)); //a>b为false,非false得true
    System.out.println(!(a<=c)); //a<=c为true,非true得false
}

此外,逻辑与也称“短路与”,逻辑或也称“短路或”。短路是指在一条线路中的某个位置发生短路,则整个线路都会停止运行。将这个机制映射到逻辑与和逻辑或中也很明确:逻辑与,众多条件中从第一个条件开始只要看到有一个条件为 false,那么也就不用再往后看了,可确定它的整体已是 false,且 该条件之后的语句不会再被执行。逻辑或,众多条件中从第一个条件开始只要看到有一个条件为 true,则整体为 true,且 该条件之后的语句不会再被执行。这就是“短路与”、“短路或”名称的由来。

如下面的语句,三个条件进行逻辑与运算,当我们看到第一个条件 a>b 为 false 时,可以直接确定整个语句为 false,那么该条件之后的 c>3 和 b++>a 都不会再被执行运算,因此 b 在该语句也是不会自增的。逻辑或同理。

public static void main(String[] args) {
    int a=5,b=10,c=5;
    System.out.println(a>b && c>3 && b++>a); //false
}

赋值运算符

赋值运算符是 =,优先级低于其他运算符,所以赋值往往是最后执行的。分简单赋值运算符和扩展赋值运算符。简单赋值就是常见的 =,扩展赋值则是在简单赋值的基础上加入一些其他的运算,如 +=、-=、*=、/=、%=。

public static void main(String[] args) {
    int a=5;
    a += 10; //同等于a=a+10
    System.out.println(a); //15
    a *= 3; //同等于a=a*3
    System.out.println(a); //45
}

字符串连接运算符

字符串连接使用 +,该符号很特别,如果两边是数字则进行加法运算,如果两边是字符串则进行连接。

char 字符型,放在单引号中,只能有一个。
String 字符串型,放在双引号中,数量不限。

public static void main(String[] args) {
    System.out.println("我是CSDN博主:"+"敬 之"); //我是CSDN博主:敬 之
    System.out.println("主页:"+"https://majinjian.blog.csdn.net"); //主页https://majinjian.blog.csdn.net

    int age = 24;
    System.out.println("我的年龄是"+age); //我的年龄是24
}

注意字符串类型具有同化性质,无论什么类型的值跟字符串连接都会成为字符串类型。如下面的语句,1+2 先进行加法运算得 3,此时 3 与字符串 “3” 连接,就变成了 “3”,后面的 4 也与字符串 “3” 连接,变成了 “4”,最后输出字符串 “334”。

public static void main(String[] args) {
    System.out.println(1+2+"3"+4); //334
}

条件运算符

条件运算符也称三目运算符,同时对三个条件进行操作。语法格式如下:

boolean?数1:数2

整个条件运算的值为数 1 或者数 2,所以最终得到的结果是这里面二选一。整个执行过程是先判断 boolean 的值,值为 true 得数 1,值为 false 得数 2。

public static void main(String[] args) {
    int number = 5;
    int number1 = number>0?33:66; //值为true得数1
    int number2 = number>6?33:66; //值为false得数2
    System.out.println(number1); //33
    System.out.println(number2); //66
}

到此这篇关于Java 六类运算符详解的文章就介绍到这了,更多相关Java 六类运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈byte和长度为8的boolean数组互相转换

    浅谈byte和长度为8的boolean数组互相转换

    下面小编就为大家带来一篇浅谈byte和长度为8的boolean数组互相转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 一文彻底搞定Java哈希表和哈希冲突

    一文彻底搞定Java哈希表和哈希冲突

    本文介绍了什么是哈希表?什么是哈希函数?什么是哈希冲突?三个问题的解决方案,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 解读maven项目启动tomcat不报错但是启动不起来,tomcat启动到警告log4j就停止了

    解读maven项目启动tomcat不报错但是启动不起来,tomcat启动到警告log4j就停止了

    这篇文章主要介绍了maven项目启动tomcat不报错但是启动不起来,tomcat启动到警告log4j就停止了问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 如何利用JConsole观察分析Java程序的运行并进行排错调优

    如何利用JConsole观察分析Java程序的运行并进行排错调优

    从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码
    2015-12-12
  • 数据结构与算法之并查集(不相交集合)

    数据结构与算法之并查集(不相交集合)

    并查集是一种挺高效的数据结构。实现简单,只是所有元素统一遵从一个规律所以让办事情的效率高效起来。这篇文章主要介绍了数据结构与算法——并查集(不相交集合),需要的朋友可以参考下
    2019-11-11
  • Javassist如何操作Java 字节码

    Javassist如何操作Java 字节码

    这篇文章主要介绍了Javassist如何操作Java 字节码,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • Java API如何实现向Hive批量导入数据

    Java API如何实现向Hive批量导入数据

    这篇文章主要介绍了Java API如何实现向Hive批量导入数据的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java设计者模式简单工厂模式解析

    Java设计者模式简单工厂模式解析

    这篇文章主要介绍了Java设计者模式简单工厂模式解析,介绍了其简介,实例以及优缺点分析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Mac下用Java调用c/c++的思路详解

    Mac下用Java调用c/c++的思路详解

    这篇文章主要介绍了Mac下用Java调用c/c++的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 详解JavaWeb中的过滤器Filter

    详解JavaWeb中的过滤器Filter

    今天给大家讲一下JavaWeb中的过滤器Filter,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论