十进制到x进制的转换:十进制数除以x,求余数,直到商为0,最后将得到余数的顺序进行反转 例如:十进制52转换为二进制 所以52的二进制为:110100
任意进制到十进制的转换: 系数:就是每一位上的数据 基数:x进制,基数就是x 权:在右边,从0开始编号,对应位上的编号即为该位的权 结果:把系数*基数的权次幂相加即可 例如:二进制110100转换为十进制
**8421码快速转换法:**8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二进制中代码的1都是代表一个固定数值 用法:二进制—>十进制的快速转换
110100:32+16+4=52
十进制—>二进制的快速转换
52=32+16+4
二进制转换到八进制,十六进制:
十进制作为桥梁二进制—>(8421码)十进制—>八进制/十六进制二进制—>八进制:三位为一组,求对应十进制,组合在一起得到其八进制二进制—>十六进制:四位为一组,求对应十进制,组合在一起得到其八进制数据类型: Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间 由于整数是默认int类型,超出int类型的范围用long类型去接收,所以必须数据的末尾加上L或者l(建议使用大写L) 浮点类型中的float,浮点类型默认是double,所以,一般情况建议在默认去写上大写F
double d = 12.345 ; float f = d ; 错误:必须强制类型转换才能不报错,因为浮点类型默认double,用小范围数据类型去接收大范围的数据类型是不可以的! float f1 = (float)12.345 ; float f2 = 12.345f; f1其实就是将一个double类型的数据强制转换为float类型 f2其实本身就定义的是一个float类型
类型转换: byte,short,char—>int—>long—>float—>double 前三者之间相互不转换,但是一旦参与运算,前三者首先会转换int类型
byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么? b=b1+b2是错误的; byte,short,char相互不转换,但是一旦参与运算,前三者首先会转换 int类型 int是4个字节,bite是一个字节去接收肯定报错,应强制类型转换 b=(byte)(b1+b2) 变量相加:先看数据类型,看是否有默认转换,若有则必须强制类型转换 常量相加:先相加,然后得到结果看其是否在byte(-128-127之内),在的话 就不会报错
byte b = 130;有没有问题?若有问题,如何改正?改正后输出多少? byte类型范围为(-128~127)超出范围,有问题,应强制类型转换 byte b=(byte)130; 130:原码->00000000 00000000 00000000 10000010 反码->00000000 00000000 00000000 10000010 补码->00000000 00000000 00000000 10000010 130强制转化为byte类型,截取3个字节:10000010(补码) 10000010(最高位为1,为负) 符号位 数值位 1 0000010(补码) 1 0000001(反码) 1 1111110(原码) - 126 因此,最后输出-126
short s = 1 ; s = s+ 1; short s = 1 ; s += 1 ; 上面两个代码有没有问题,如果有,哪里有问题. 第一个有问题:隐含了一个默认类型转换类型不匹配 第二个没有问题:扩展的赋值运算符隐藏了强制类型转换
扩展的逻辑运算符:
逻辑双与(&&)
逻辑与和逻辑双与的区别? 共同点:两个表达的效果是一样的(有false则false) 短路效果: 逻辑双与具有短路效果:左边的表达式如果是false,则右边不执行
逻辑双或(||)
逻辑或和逻辑双或的区别? 共同点:两个表达的效果是一样的 短路效果 具有短路效果,左边如果是true,右边不执行.