黑马程序员 java运算符
1. 算术运算符
+ :加法
- :减法
* :乘法
/ :除法
% :取余运算
2. 关系运算符
<:小于
> :大于
<=:小于等于
>=:大于等于
==:等于
!= :不等于
3. 逻辑运算符 (操作符只能是布尔类型的)
&&:与
||:或
! :非
逻辑运算符用于连接boolean类型的表达式。
true & true = true;
true & false = false;
false & true = false;
false & false = false;
& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
只有两边都为true,结果为true。
true | true = true;
true | false = true;
false | true = true;
false | false = false;
| : 两边只要有一个为true,结果为true。
只有两边都有false,结果为false。
^ : 异或;就是和|有点不一样。当true ^ true = false;
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^ : 两边相同结果是false。
两边不同结果是true。
&和&&的特点:
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。
|:两边都参与运算。
||:当左边为true。右边不运算。
4. 位运算符
& :&和&&的特点—>&:无论左边是true是false。右边都运算;&&:当左边为false时,右边不运算。
| :|和||的特点—> |:两边都参与运算; ||:当左边为true。右边不运算。
^ :当true ^ true = false
!:不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
5. 移位运算符(只能处理整数运算符)
<< :
>> :若符号位为正,则在最高位补0;若符号位为负,则在最高位补1
>>> :无论正负,移位后,都在最高位补0
Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型。
6.三元运算:(条件表达式)?表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2。
小练习1:
/*
需求:
1.定义int变量:a和b,让a和b进行简单加法和取模运算。
2.将a与b的值进行调换。
步骤:
1.定义变量;
2.进行运算。
*/
public class Test
{
public static void main (String[]args)
{
int a = 6, b = 8,c,d,temp;
c = a + b;
d = a/b;
/*
temp = c - b; //将a与b的值调换,一种方法是声明一个临时变量temp,然后将a与b的值进行互换即可。
a = c - temp;
b = temp ;
*/
a = a ^ b; //将a的值与b的值调换另一种方法就是利用逻辑运算符:^。规律:一个数亦或另一个数两次,结果还为那个数。注意:如果两个数非常大可能会超出int范围。
b = a ^ b; //b=(a^b)^b
a = a ^ b; //a=a^(a^b)
System.out.println ("a+b="+c); //此处 + 起字符链接作用。
System.out.println ("a对b进行取摸结果为:"+d); //两个数进行取模运算,若前者小于后者,取模结果为0.
System.out.println ("a与b调换后,a="+a + "b="+b);
}
}
小练习2:
/*
需求:声明变量n m x ,将n进行向右位移2位,将x进行三元运算。
步骤:
1.声明变量n = 6;
2.将n进行位移得出m;
3.x进行三元运算。
*/
public class Test1
{
public static void main (String []args)
{
int n = 6;
int m = n >>>2,x; //>>与>>>的区别:>>最高位补什么由原来最高位决定;>>>不管最高位什么,位移后最高位就用0补齐。
x = (m>1)?'m':50;
System.out.println ("m="+m);
System.out.println ("x="+x);
}
}