:Java运算符
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:Java运算符相关的知识,希望对你有一定的参考价值。
文章目录
运算符就是对操作数进行操作的符号,例如a+b
中a
和b
是操作数,+
是运算符。Java中运算符和C语言中的运算符基本一致(当然也有自己的特点)。运算符主要有以下几类
- 算数运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 移位运算符
- 条件运算符
一:算数运算符
(1)基本算数运算符:+
、-
、*
、\\
、%
- 它们都是二元运算符,也即运算时需要左右两个操作数
①:两个int
相除时结果仍为int
,同时还会向下取整,这一点很多人容易犯错
public class TestDemo
public static void main(String[] args)
int a = 3;
int b = 2;
System.out.println(a / b);//实际输出1,舍弃小数位
②:当两侧操作数类型不一致时,会向类型大的提升,这里尤其注意/
public class TestDemo
public static void main(String[] args)
// 类型提升
System.out.println(1+0.2);//1已经被提升为了double,输出1.2
//注意/运算符
System.out.println(5/2);//输出2
System.out.println((float)5/2);//输出2.5
System.out.println(5/(float)2);//输出2.5
System.out.println((float)(5/2));//输出2.0
③:\\
、%
运算时,右操作数不能为0
- 在数学中叫做除数不能为0
- 程序运行后会抛出异常
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 0;
System.out.println(a / b);
④:%
也可以操作负数
public class TestDemo
public static void main(String[] args)
System.out.println(10 % 3);
System.out.println(10 % -3);
System.out.println(-10 % 3);
System.out.println(-10 % -3);
(2)增量运算符:+=
、-=
、*=
、\\=
、%=
- 这一部分和C语言一致
- 注意:增量运算符具有自动类型转换的功能
public class TestDemo
public static void main(String[] args)
int a = 1;
a+=2; //相当于a=a+2
System.out.println(a);
int b = 1;
b-=2; //相当于b=b-2
System.out.println(b);
int c = 1;
c*=2; //相当于c=c*2
System.out.println(c);
int d = 1;
d/=2; //相当于d=d/2
System.out.println(d);
int e = 3;
e%=2; //相当于e=e%2
System.out.println(e);
(3)自增自减运算符:++
、--
- 如果单独使用,那么【前置++】和【后置++】无任何区别
- 如果混合使用,那么【前置++】是先+1然后再使用变量+1之后的值,【后置++】则相反
public class TestDemo
public static void main(String[] args)
int a = 1;
System.out.println(a++);//先使用故输出1,然后a变为2
System.out.println(++a);//先++变为3然后输出
二:关系运算符:==
、!=
、<
、>
、 <=
、 >=
- 注意区分
=
和==
- 关系运算符的结果只有两种可能:
true
或false
- 不存在类似于
a<b<c
这样的操作
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 2;
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a<b);
System.out.println(a>b);
System.out.println(a<=b);
System.out.println(a>=b);
三:逻辑运算符:&&
、||
、!
(1)逻辑与:&&
-
&&
左右两侧必须都是boolean
类型 -
规则为:遇假则假、全真则真
-
运算时从左到右依次判断,一旦某个表达式为
false
,则结果直接返回false
,后续表达式不再执行(“短路”现象)
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2);
System.out.println(a == 1 && b > 100);
System.out.println(a > 100 && b == 2);
System.out.println(a > 100 && b > 100);
短路现象
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 2;
System.out.println(((a > b) && ((19 / 0) == 0))); //a>b返回false,直接返回false,虽然后面除数为0,但是不执行
(2)逻辑或:||
||
左右两侧必须都是boolean
类型- 规则为:遇真则真、全假则假
- 运算时从左到右依次判断,一旦某个表达式为
true
,则结果直接返回true
,后续表达式不再执行(“短路”现象)
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2);
System.out.println(a == 1 || b > 100);
System.out.println(a > 100 || b == 2);
System.out.println(a > 100 || b > 100);
短路现象
public class TestDemo
public static void main(String[] args)
int a = 1;
int b = 2;
System.out.println(((a < b) || ((19 / 0) == 0))); //a<b返回true,直接返回true,虽然后面除数为0,但是不执行
(3)逻辑非:!
!
后面只能接布尔表达式,而不能像C语言一样出现类似于!1
、!0
的操作- 规则为:真变假、假变真
public class TestDemo
public static void main(String[] args)
int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
四:位运算符:&
、|
、^
、~
关于位运算符这里就不详细展开了,只说一下具体规则。位运算符会针对比特位进行运算
- 按位与(
&
):如果两个二进制位都是 1, 则结果为 1, 否则结果为 0 - 按位或(
|
):如果两个二进制位都是 0, 则结果为 0, 否则结果为 1 - 按位异或(
^
):如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1 - 按位取反(
^
):如果该位为 0 则转为 1, 如果该位为 1 则转为 0
五:移位运算符
以上是关于:Java运算符的主要内容,如果未能解决你的问题,请参考以下文章