#java系列课程#运算符
今天来说运算符,那么什么是运算符呢?运算符都有哪些呢?
运算符是用于执行程序代码运算,是一个符号,会针对一个以上操作数项目来进行运算。其实非常容易理解,2+3,其操作数是2和3,而运算符则是“+”,当然后面有=的话,“=”也是运算符。
Java 语言中常用的运算符可分为如下几种:
-
算术运算符:+,-,*,/,%,++,--
-
赋值运算符
-
比较运算符
-
逻辑运算符
-
条件运算符
算术运算符:
算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。
Java 中常用的算术运算符:
Java
的算术运算符分为一元运算符和二元运算符。一元运算符只有一个操作数;二元运算
符有两个操作数,运算符位于两个操作数之间。算术运算符的操作数必须是数值类型。
Java的算术运算符分为一元运算符和二元运算符。一元运算符只有一个操作数;二元运算符有两个操作数,运算符位于两个操作数之间。算术运算符的操作数必须是数值类型。
一元运算符只有+(正),-(负),++,--
其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但是结果完全不一样!
例如呢:a=1;b=a++
运行结果:a=2,b=1;
因为a++是a+1的结果赋给b
再来看另外一个例子
a=1;b=++a;
因为++a是a先自己加1,然后再把结果赋给b
运行结果:
a=2;b=2
要注意的是:自加或者自减都只能在操作变量的时候用,不能直接操作数值或者常量,比如8++,3--等都不对
当然了,真正笔试的时候不可能问你这么简单的,肯定会非常复杂的,来看一个稍微复杂一点的
public class NiuKeWang{
public static void main(String 【】 args){
int a=2;
int b=1;
int c=3;
System.out.println(+(a++-b+++2*c--));
}
}
那么最后输出的结果应该是多少呢
2-1+2*3=7
真正笔试出的话肯定要复杂的多,所以可以多练习。
需要注意的问题:% 用来求余数,也称为”取模运算符“
来看几个例子:
5%-2=1;
-5%2=-1;
-5%(-2)=-1;
也就是说结果的符号看的是模数。
那么这种情况之下的特殊情况呢?
-
想输出0%0,:那肯定是编译出错
-
想输出0%0.0,:结果是NAN
-
想输出5%0.0,结果是NAN
-
想输出0%5.0,结果是0.0
java运算符之赋值运算符
赋值运算符用于 为变量指定变量值,java中使用=作为赋值运算符,使用赋值运算符将一个变量值赋给变量
String s="java";//为变量s赋值为java
double i=3;//为变量i赋值为3
boolean b=true;//为变量b赋值为true
还可以将一个变量赋值给另外一个变量
String str=s;//将变量s的值赋给str
Java 支持的常用赋值运算符
=
+=
-=
*=
/=
%=
比较运算符
比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值。例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
Java 中常用的比较运算符如下所示:
>
<
>=
<=
!=
==
注意!!
1、 > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型
2、 == 、 != 两边的操作数既可以是数值类型,也可以是引用类型
3、比较运算符的结果都是boolean型,只有true或者false,运算符运算符,都是产生结果的。
public class Niukewang{
public static void main(String [] args){
System.out.println(2>1.0);//输出应该是true
System.out.println(3==3.0);//输出应该是true,自动提升
System.out.println(97=='a');//输出应该是true,自动提升
System.out.println(true==false);//输出为false
}
}
位运算符
java支持的位运算符有如下7个:
&
|
~
^
<<
>>
>>>
|有一个为真就是真
^相同的就是真,不同就是假
~取反,0变1,1变0 就可以了
&都为真的时候才是真
看一下例子
System.out.println(2&3);//结果是2,计算的是先把两个数转成2进制,0000 0010
0000 0011
0000 0010=2
System.out.println(2|3);//0000 0010
0000 0011
0000 0011=3
System.out.println(2^3);//0000 0010
0000 0011
0000 0001=1
这个就是这样算,先拆解在计算。
关于移位运算符
移位运算符:
>>:右移运算符,
<<:左移运算符
>>>:无符号右移运算符
来看一下
1357=00000000000000000000010101001101
-1357=1111111111111111111101010110011
1357>>5=00000000000000000000000000101010
-1357>>5=11111111111111111111111111010101
1357<<5=00000000000000001010100110100000
-1357<<5=11111111111111111101011001100000
1357>>>5=00000000000000000000000000101010
-1357<<<5=00000000000000001010100110100000
有的人可能会问负数怎么变二进制呢,要先把正数的首位0变成1,其他位是0变1,1变0,再在末尾加1