2.运算符

一、算数运算符

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’&&12
6<=45+23&&false
–>5<6|‘A’>‘a’&&72<=68&&false
–>ture|false&&false&&false
–>ture&&false&&false
–>false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值