运算符
1.算数运算符
+ - * / %
++ --
使用方式:单独使用 参与运算
当++ ,-- 出现在操作数后面时,先赋值再自加1/自减1
当++,-- 出现在操作数前面时,先自加1/自减1
/*
算数运算符
+ - * / %
++ –
使用方式:单独使用 参与运算
当++ ,-- 出现在操作数后面时,先赋值再自加1/自减1
当++,-- 出现在操作数前面时,先自加1/自减1
/
class SuanShu{
public static void main (String[] args){
//操作+
/int a=3;
int b=4;/
///+ (求和,字符串连接符)
System.out.println(a+b);//求和
//数值类型的数字和字符进行求和时先把字符转成编码值再进行求和
System.out.println(a+‘a’);
//字符串常量可以任意数据进行拼接
System.out.println(a+“a”+‘a’);//拼接
*/
//操作-
//0.20000000000000018 ---不是精确结果
//小数没有精确运算
/*double d=2.1-1.9;
System.out.println(d);*/
//操作*
/*int e=6;
int f=2;*/
/*System.out.println(e/0);*/
//ArithmeticException --算数异常
/*System.out.println(e/f);*/
//Infinity--正无穷大 -Infinity---负无穷大
//java支持小数除零
/*System.out.println(-a*1.0/0);*/
//NaN -Not A Number 不是一个数
/*System.out.println(0.0/0);*/
//0---
//当参与操作的都是数据都是整型数据结果依然是整型数据
/*System.out.println(2/4);*/
//当参与操作的数据出现小数结构就是小数
/*System.out.println(2*1.0/4);*/
//操作%
/*int a =3;
int b=4;
//%左边数据正负决定了取余结果的正负
System.out.println(a%b);
System.out.println(-a%b);
System.out.println(a%-b);
System.out.println(-a%-b);*/
//++ --
int a=3;
int b=--a;//参与运算
/*System.out.println(a++);//单独使用*/
/*System.out.println(++a);*/
/*System.out.println(a);*/
//byte,short,cahr 做++ --时底层会默认添加强制类型转换
byte b1=127;//强制类型转换
b1++;
short s=-32768;
s--;
System.out.println(s);
System.out.println(b1);
}
}
2.赋值运算符
赋值运算符
= 把右边的值赋值给左边
扩展赋值运算符
+= ,-=, *= , /=,%= , &= ,(按位与等),|=(按位或等)
^=(按位异或等), >>=(右移等),
/*
赋值运算符
= 把右边的值赋值给左边
扩展赋值运算符
+= ,-=, *= , /=,%= , &= ,(按位与等),|=(按位或等)
^=(按位异或等), >>=(右移等),
*/
class FuZhi{
public static void main (String[] args){
//定义变量
/int a=3;
int b=4;
a+=b;//a=a+b;
System.out.println(a);/
//支持定义形式
//int a=1,b=2,c=3;
//java不支持连等定义
/*int a=b=c=3;*/
//支持连等赋值
/*int a=3;*/
//展开从右往左计算
/*int b=a+=a-=a*=5;
System.out.println(b);//-9*/
//右边变量的值不会影响左边已经编译好的值
int a=3;
int b=a+=a-=a*=a++;
System.out.println(b);
}
}
3.关系(比较)运算符
关系(比较)运算符(结果值一定是布尔值
==,!=,>,<,>=,<=
/*
关系(比较)运算符(结果值一定是布尔值
,!=,>,<,>=,<=
*/
class GuanXi{
public static void main(String [] args){
//操作 ==
System.out.println(24);
//操作 >=
System.out.println(5>=0);
}
}
4.逻辑运算符
用于左右两边布尔值
&(逻辑与) |(逻辑或) ^(逻辑异或) !(逻辑非)
&&(双与) ||(双或)
/*
逻辑运算符
用于左右两边布尔值
&(逻辑与) |(逻辑或) ^(逻辑异或) !(逻辑非)
&&(双与) ||(双或)
总结:
1,& 遇见false则false
2,| 遇见true则true
3,^ 两边关系相同则false,不同则true
4,! 结果取反(当出现偶数个数结果不变)
5,&& ||
&& 与逻辑与的运算规律一致 ,但是当&&左边出现false时,
右边默认不执行----短路效果
|| 与逻辑或的运算规律一致,但是当||左边出现true时右
边默认不执行-=--短路效果
*/
class LuoJi{
public static void main (String [] args){
//定义变量
int a=1;
int b=2;
int c=3;
//操作 &
//
System.out.println((a>c)&(b>c));
System.out.println((a>b)&(b<c));
System.out.println((a<b)&(b>c));
System.out.println((a<b)&(b<c));
System.out.println("----------------");
//操作 |
System.out.println((a>c)|(b>c));
System.out.println((a>b)|(b<c));
System.out.println((a<b)|(b>c));
System.out.println((a<b)|(b<c));
System.out.println("----------------");
//操作 ^
System.out.println((a>c)^(b>c));
System.out.println((a>b)^(b<c));
System.out.println((a<b)^(b>c));
System.out.println((a<b)^(b<c));
System.out.println("----------------");
//操作 !
System.out.println(!(b>c));
System.out.println("----------------");
//操作 &&
System.out.println((a>c)&&(b>c));
System.out.println((a>b)&&(b<c));
System.out.println((a<b)&&(b>c));
System.out.println((a<b)&&(b<c));
System.out.println("----------------");
// ||出现在&&的左边且||出现短路,就会把后面的内容以及&&全部短路
System.out.println(true||(a++==b)&&(b>c--));
System.out.println(a);
System.out.println(c);
System.out.println("----------------");
}
}
5.位运算符
位运算符
数据转成二进制补码形式
&(按位与), |(按位或), ~(按位取反),^(按或异位)
>>(右移 , <<(左移),>>>(无符号右移)
/*
位运算符
数据转成二进制补码形式
&(按位与), |(按位或), ~(按位取反),^(按或异位)
>>(右移 , <<(左移),>>>(无符号右移)
/
/
按位异或的扩展结论 (当一个整数按位异或另一个整数两次时结果还是本身)
*/
class Wei{
public static void main(String[] args){
//定义变量
/int a=2;
int b=3;/
//操作 &
/System.out.println(a&b);//2
//操作 |
System.out.println(a|b);//3
//操作 ^
System.out.println(a^b);//1
//操作 ~
System.out.println(~a);//-3/
/*
00000000 0000000 00000000 00000010 int 2补码
00000000 0000000 00000000 00000011 int 3补码
//操作& 遇0则0 任意整数&1==0 一定是偶数
//任意 整数&正数 -一定是正数
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
--------------------------------------
00000000 00000000 00000000 00000010 2
//操作 | 遇1则1 任意整数|0 结果一定是本身
//任意的整数|负数 结果一定是负数
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
--------------------------------------
00000000 00000000 00000000 00000011 3
//操作^(按位异或)相同则0 不同则1 任意整数^另一个整数结果还是0
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
--------------------------------------
00000000 00000000 00000000 00000001 1
*/
int a=2;
int b=5;
System.out.println(a^b^a);//5
System.out.println(b^a^b);//2
}
}
6.三目(元)运算符
三目(元)运算符(结果一定是一个值)
格式:
布尔表达式?表达式值1:表达式值2:;
流程
先计算出布尔表达式的值,如果是true返回表达式值1,
如果是false返回表达式值2
/*
三目(元)运算符(结果一定是一个值)
格式:
布尔表达式?表达式值1:表达式值2:;
流程
先计算出布尔表达式的值,如果是true返回表达式值1,
如果是false返回表达式值2
*/
class SanYuan{
public static void main (String [] args){
//求两个整数的最大值
/int a=1;
int b=2;
//把三目运算符赋值给新变量
//两个表达式的类型要小于等于接受值的类型
int max=a>b?a:b;
System.out.println(max);/
//求三个整数的最大值
/int a=1;
int b=2;
int c=3;
//三目嵌套
System.out.println(a>b?(a>c?a:c):(b>c?b:c));/
//优先级
System.out.println(1>=3-2);
}
}
优先级:
() ~ ++ – ! * / % + - << >> >>> 关系逻辑 & | ^ 三元赋值