java中的强制类型转换 int转为byte

来源:互联网 发布:手机淘宝背景怎么设置 编辑:程序博客网 时间:2024/06/05 17:14

        • Java中的基本类型
        • 基本类型的强制转换典型笔试面试题
        • 分析

Java中的基本类型

java中所有的基本数值类型都有正负号,所以不要去寻找无符号的数值类型。

基本类型 大小 最小值 最大值 包装器类型 boolean - - - - char 16-bit Character byte 8 bits -128 127 Byte short 16 bits -2^15 2^15-1 Short int 32 bits -2^31 2^31-1 Integer long 64 Bits -2^63 2^63-1 Long float 32 bits IEEE754 IEEE754 Float double 64 bits IEEE754 IEEE754 Double void - - - Void

高精度数字:
- BigInteger 支持任意精度的整数
- BigDecimal 支持任何精度的浮点数

java中的基本类型的强制转换都是非常粗暴的,对于浮点型转为整型,都进行非常粗暴的截尾,对于多位数转换为少位数,也只是截断,根本不做舍入和约算。所以就有了下面的结果。

基本类型的强制转换典型笔试面试题

package primitiveType;public class ByteTrancute {    public static void main(String[] args) {        // TODO Auto-generated method stub        byte a=(byte)127;        byte b=(byte)128;        byte c=(byte)100;        int  x=0xff;//255        byte d=(byte)x;        x=0x80;//128        byte f=(byte)x;        c=(byte)(c*3);        System.out.println(a+" "+b+" "+c+" "+d+" "+f );    }}

输出:

127 -128 44 -1 -128

分析

复习二进制的知识

原码

对于二进制数,最高位为符号位,0表示正数,1表示负数,剩余数值部分是真值。

反码

对于二进制数,正数的反码就是它本身,负数的反码除符号位外按位取反。

补码

对于二进制数,正数的补码就是它本身,负数的补码符号位取一,数值部分按位取反后末位加一。

由补码求真值,就是由补码求原码

正数:补码即原码负数:按位取反,末位加一。相当于再求一次补码。如:1000 0000 计算得 1 0000 0000 视为-1281111 1111 计算得   1000 0001 即系-10111 1111 就是正值 127

所以,以上的代码中的类型强制转换结果为:

int 32bits二进制 截成8bits后 byte 127 0111 1111 0111 1111 127 128 1000 0000 1000 0000 -128 255 1111 1111 1111 1111 -1 127 0111 1111 0111 1111 127 300 01 0010 1100 0010 1100 44
1 0
原创粉丝点击