一、算数运算符
1、除法运算符
表示俩个数相乘
2、取余运算符
表示俩个数相乘的余数
3、加法运算符
(1)表示正数
System.out.println(+5);//5表示正数
(2)表示相加操作
System.out.println(5+6);//11 表示相加
System.out.println(5+'6');//59 表示相加
(3)表示字符串的拼接
+左右俩侧任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
int num = 56;
System.out.println("num="+num);//num=56
System.out.println(5+6+"7");//117
System.out.println(5+'6'+"7");//597
System.out.println("5"+'6'+"7");//567
System.out.println("5"+'6'+'7');//567
4、自加减运算符
(1)单独使用
++单独使用时,无论放前还是放后都是加1操作
int a = 5;
a++
System.out.println(a);//6
int a = 5;
++a
System.out.println(a);//6
(1)参与运算.
++在前先加1,后运算。++在后先运算,后加1.
a=5;
int m=a+++7;
System.out.println(m);//12
System.out.println(a);//6
a=5;
int n= ++a+7;
System.out.println(n);//13
System.out.prinln(n);//5
二、赋值运算符
//交换num1与num2
int num1 = 5;
int num2 = 6;
int t;//申请一个中间变量
t=num1;
num1=num2;
num2=t;
二、扩展赋值运算符
+=、-=、*=、/=
特点:可读性性较原始写法较差,但编译效率高 ,底层自动完成数据类型转换
原始:
//实现功能:给出三个数,求和
//给出三个数
int num1=10;
int num2=20;
int num2=30;
//求和
int sum = num1+num2+num3;
//将和输出
System.out.println("和:"+sum);
改进:
//给出三个数
int num1=10;
int num2=20;
int num2=30;
求和
int sum = 0;
sum = sum + num1;//sum+=num1;
sum = sum + num2;//sum+=num2;
sum = sum + num3;//sum+=num3;
//输出
System.out.println("和:"+sum);
易错
(1)a+=b相当于a=a+b,那.
些相当于a=b+a嘛:
对于基本数据类型没有区别:
a:10 b:40
a都等于50
对于String类型则不同
a:“U” b:“C”
a=a+b
输出:“UC”
a=b+a
输出:“CU”
(2)下面的代码哪一行错了?
1.byte a=10;
2.int b=20;
3.a+=b;
4.a=a+b;
第四行:赋值运算符底层可进行自动类型转化
改:a=(byte)(a+b);
三、关系运算符
,<,>=,<=,==,!=
最终结果:ture false
System.out.println(4>9);//false
System.out.println(4<9);//true
System.out.println(4>=9);//false
System.out.println(4<=9);//ture
System.out.println(4==9);//false
System.out.println(4!=9);//true
System.out.println((5<9)!=(6==8));//true
四、 逻辑运算符
&,|,&&,||,!,^
结果:布尔值。左右连接都是布尔类型的操作值
与:&
//与:&只要有一个操作数是false,结果一定为false
System.out.println(ture&ture);//ture
System.out.println(ture&false);//false
System.out.println(false&ture);//false
System.out.println(false&false);//false
短路或:&&
//短路与:只要第一个表达式是false,那么第二个表达式不用计算,结果一定是false
System.out.println(ture&&ture);//ture
System.out.println(ture&&false);//false
System.out.println(false&&ture);//false
System.out.println(false&&false);//false
或:|
//只要有一个操作数是ture,结果一定为ture
System.out.println(ture|ture);//ture
System.out.println(ture|false);//ture
System.out.println(false|ture);//ture
System.out.println(false|false);//false
短路或:||
//短路或:只要第一个表达式是,那么ture第二个表达式不用计算,结果一定是ture
System.out.println(ture||ture);//ture
System.out.println(ture||false);//ture
System.out.println(false||ture);//ture
System.out.println(false||false);//false
逻辑非:!
System.out.println(!ture);//false
System.out.println(!false);//ture
逻辑异或:^
//操作数相同结果为false,操作数不相同结果为ture
System.out.println(ture^ture);//false
System.out.println(ture^false);//ture
System.out.println(false^ture);//ture
System.out.println(false^false);//false
六、 条件运算符(三元运算符)
书写格式:a?b:c
a为一个布尔类型的表达式,返回结果为ture或者false
a为ture,表达式结果为b
a为false,表达式结果为c
int num = (5<7)?6:9;
System.out.println(num);
String str = (4==8)?"你好":"你不好";
System.out.println(str);
//实现功能:男孩女孩选择晚饭吃什么,意见一致,听男声的,意见不一致听女生的
Scanner sc = new Scanner(System.in);
System.out.println("请选择今晚吃什么:1.火锅 2.烧烤 3.麻辣烫 4,西餐");
System.out.println("请男孩选择");
int boyChoice=sc.nextInt();
System.out.pritln("请女孩选择");
int girlChoice=sc.nextInt();
System.out.println(boyChoice==girlChoice?"")
七、位运算符
&、|、^、~、>>、<<、>>>
(1)如何区分逻辑运算符和位运算符
逻辑运算符:左右连接的是布尔类型的操作数
位运算符:左右来连接的是具体的数值
(2)<<左移(相当于乘法)
例:3左移俩位
3对应的二进制:0011------->3
左移俩位:1100------->12
4*8最快的方式:4<<3
(3)>>有符号右移(相当于除法)
例:6>>2
6对应的二进制:0110------->6
右移俩位:0001------->1
注意:二进制首位表示符号位移动后其他位用0补齐
例:-6>>2=-2
6: 00000000 00000000 00000000 00000110
取反:11111111 11111111 11111111 11111001
加1:11111111 11111111 11111111 11111010---->-6
-6:11111111 11111111 11111111 11111010
(4)>>>无符号右移
6>>>2=1
(5)&与
例:6&3
6:00000000 00000000 00000000 00000110
3:00000000 00000000 00000000 00000011
&:00000000 00000000 00000000 00000010
(6)|或
例:6|3
6:00000000 00000000 00000000 00000110
3:00000000 00000000 00000000 00000011
|:00000000 00000000 00000000 00000111
(7)^异或
例:6^3
6:00000000 00000000 00000000 00000110
3:00000000 00000000 00000000 00000011
^:00000000 00000000 00000000 00000101
(8)~反(单目运算符)
例:~6=-7
6:00000000 00000000 00000000 00000110
取反:11111111 11111111 11111111 11111001
(负数)
减一:11111111 11111111 11111111 11111000
取反:00000000 00000000 00000000 00000111
加负号:-7
PS:byte类型的的表数范围-128怎么计算
127:01111111
-128:10000000
减一:01111111
取反:10000000
2^7=128
加负号=-128
八、运算符的优先级别
赋值<三目<逻辑<关系<算术<单目
例:5<6|‘A’>‘a’&&126<=45+23&&!ture
–>5<6|‘A’>‘a’&&126<=45+23&&false
–>5<6|‘A’>‘a’&&72<=68&&false
–>ture|false&&false&&false
–>ture&&false&&false
–>false