Java-基础-数据类型-基本类型

概念

说到基本类型就必须提及另外一个跟基本数据类型对应的一个类型:引用数据类型。
Java中有两大数据类型

  • 内置数据类型 也称基本数据类型
  • 引用数据类型 也称对象数据类型

这两种数据类型的变量统称为变量,变量是用来申请内存存储值的。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

Java语言提供八种基本类型:其中六种数字类型,一种字符类型以及一种布尔类型。其实严格来说void也算基本数据类型,只不过没有相应的操作方法。而且八种基本类型和void类型都有其对应的包装类型,void的包装类型是java.lang.Void

  • boolean 1/8个字节
  • byte 1个字节
  • short 2个字节
  • char 2个字节
  • int 4个字节
  • float 4个字节
  • long 8个字节
  • double 8个字节
    其中 boolean char 这两种基本数据类型是无符号的,六种数字类型都是有符号的,都是以最高位作为符号位。那么四种整数类型能表达的数字范围都是 [-2^(n-1), 2^(n-1) - 1] 的范围,其中n是数字类型的二进制位数。
    char 的取值范围是[0, 2^16 - 1] 也就是 [\u0000, \uffff] 的范围,同时也是UTF-16的字符集范围。
    在不超出范围的情况下 byte short char int 都可以用一个int类型的数字来赋值,超过其范围则编译报错。
    另外需要注意的是 byte short char 三种类型的四则运算都会隐式的提升为int类型,或更高的类型。
    所以下面的写法第一行是正确的而第二行是错误的:
byte b = 127;  // 不超过其取值范围。
byte c = b - b; // 这里会被转换成 int 如果需要用byte来存放需要强转。

但是 byte c = --b; 或 byte c = b++; 却是可以的?!

byte <(short=char)< int < long < float < double

如果从小转换到大,可以自动完成,而从大到小,必须强制转换。short和char两种相同类型也必须强制转换。

不同的数字类型之间做运算会将低等级的类型转换成高等级的类型再进行运算。
整型字面值可以用十进制、16、8、2进制来表示。十进制很简单,2、8、16进制的表示分别在最前面加上0B(0b)、0、0X(0x)即可

浮点数
Java中给变量赋值时,整数缺省类型为int,小数的缺省类型为 double,所以要将 123.4 赋值给float变量则需要在后面加上 f 或 F

你可能感兴趣的:(Java-基础-数据类型-基本类型)