java的数据类型的隐式转换和强制转换
1111 111
二进制转换为10进制的公式
第N位的数去乘以2的第N次方## 标题
通俗来讲二进制是逢二进一
如果第三位数为1那么就会公式就为 1乘2的3次方
1 *1 1 =1
1 *2 1 =2
1 *2 2 = 4
1 2 3 = 8
1 2 4 = 16
1 2 5 = 32
1 2 6 = 64
2+4+8+16+32+64 = 127
short s1 = s1+1这句话有什么错误错在哪里?
首先1是一个int类型s1加1的时候会把java虚拟机会把这个加出来的数转换成int类型
而int类型的数值是比short大的所以这里的计算会造成精度的损失。所以会爆出需要强制转换的错误,可以改成 s1 = (short)(s1+1)
short s1+=1 这句话有没有错?
首先java对于+=这句话中产生了特殊的处理做了一个隐式的转换所以并不会报错可以编译成功
s1++;
在这里java对于++或者–的运算做出特殊的机制处理会做出一个隐式的转换所以可以执行成功。
&和&&的区别是什么
他们两个的输出结果是相同的
两个都是逻辑的连接符
但是一个&是没有阻断机制的,就算第一个不为真,那么在判断的时候他还是会去判断第二个为不为真。
&&
有阻断机制只要第一个不为真的时候那么他就没有必要再去检查第二个为不为真了;
B:同理||和|的区别?(学生自学)
int i = 1;
int b = 2;
int c = 0;
if(b2 || i(c=2)){
System.out.println((i2)+" "+(b2)+“c=”+c);
}else{
System.out.println(“没有正确判断”);
}
首先他们输出的结果是一样的但是
一个或者不管左边为真还是不为真都会去执行右边的代码,
两个||是如果左边为真那么他就不会执行右边的代码,只有不为真的时候才会去检验右边的会不会为真