Java基本类型与类型转换(1)

来源:互联网 发布:python上传图片的步骤 编辑:程序博客网 时间:2024/06/05 15:02
1、Java的基本数据类型分为两大类:boolean类型和数值类型。

而数值类型又可以分为整数类型和浮点类型。整数类型里的字符类型也可单独对待。


所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有的整数,补码的计算规则:

正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。如下
// 定义二个8位的二进制数        int binVal1 = 0b11010100; //最高位不是符号位        byte binVal2 = 0B01101001; //byte只有8位,所以最高位是符号位        // 定义一个32位的二进制数,最高位是符号位。        int binVal3 = 0B10000000000000000000000000000011;        System.out.println(binVal1); // 输出212        System.out.println(binVal2); // 输出105        System.out.println(binVal3); // 输出-2147483645
binVal3转换为十进制的过程,如下图:



2、基本类型的类型转换
      自动类型转换:当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。


  箭头左边的数值类型可以自动类型转换为箭头右边的数值类型。任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换为字符串类型。强制类型转换:如果希望将箭头右边的类型转换为左边的类型,则必须进行强制类型转换。语法格式:(targetType)value。如果将表数范围大的类型转换为表数范围小的类型时,很容易引起信息丢失。
     int iValue = 233;     // 强制把一个int类型的值转换为byte类型的值     byte bValue = (byte)iValue;     // 将输出-23     System.out.println(bValue);

3、表达式类型的自动提升
当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据类型将发生自动提升。规则:
  • 所有的byte类型,short类型和char类型将提升到int类型
  • 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
// 定义一个short类型变量        short sValue = 5;        // 下面代码将出错:表达式中的sValue将自动提升到int类型,        // 则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。        // sValue = sValue - 2;        // 输出字符串Hello!a7        System.out.println("Hello!" + 'a' + 7);        // 输出字符串104Hello!        System.out.println('a' + 7 + "Hello!");


注:以上均来自《Java疯狂讲义》总结


原创粉丝点击