在 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 六类运算符内容请搜索好代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好代码网!