2021-5-21 字符串、运算符、运算

字符串、运算符


1、类型提升

byte b1=3,b2 =4,b;
//编译不通过,编译器发现右边的变量,不认确定它的值是否在byte的范围内,为了保险起见,编译器就要求我们显示转换。也就是要求在外面加上byte
b = b1+b2;

在运算时,先将b1、b2从内存拿出来,提升为int类型,再运算。

2、字符串拼接

String str = "zyf";
int i = 3,j = 5;

System.out.print(i+j+str+i+j);//输出结果为8zyf35

这里容易出错,只看+号两边的类型判断结果,从左向右运算!

3、自增(对比)

byte b = 2, b1 = 3;
//对比
b = b++;//①
System.out.print(b);//输出2
b1++;
System.out.print(b1);//输出4

①注意:这里先将b的值拿出来赋值给表达式,再b++=128,然后将表达式的值赋值给b

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNBW7i7J-1622272200924)(day03.assets/image-20210526113303331.png)]

4、&、|、&&、||的区别

//测试&
int a = 2;
false&a++;
System.out.print(a);//输出3

false&&a++;
System.out.print(a);//输出3

//测试|
int b = 3;
true|b++;
System.out.print(a);//输出4

true||b++;
System.out.print(a);//输出4

&、| 两个子条件都会去判断

&&、||会存在短路情况。(只判断第一个子条件)

5、&、^、|的作用

位运算符,又是逻辑运算符

位运算(类似逻辑运算):

System.out.print(1&2);//输出0   01 10 全1为1
System.out.print(1^2);//输出3  01 10  相加相同的为一,不同的为0
System.out.print(1|2);//输出3   01 10 有1为1

6、位移 >> << >>>

点击查看-位运算经典例子

左乘右除2^位数。

m>> n 右移:向右移动n位,相当于m/2^n。左边补符号位。负数移位以补码方式移位

m<<n 左移:向左移动n位,相当于m*2^n。右边补0。负数移位以补码方式移位

>>> 无符号右移:向右移动n位,相当于m/2^n。左边补0。负数移位也是以补码方式移位。

-20:源码:10000000 00000000 00000000 00010100

反码:11111111 11111111 11111111 11101011

补码:11111111 11111111 11111111 11101100

右移:00111111 11111111 11111111 11111011

结果:r = 1073741819

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值