Java 基本数据类型

基本数据类型

基本数据类型{整数类型{byte1short2int4long8浮点类型{float4double8字符类型{char2布尔类型 boolean

Java只包含这8种基本数据类型,值得指出的是,字符串String不是基本数据类型,字符串是一个类,也就是个引用数据类型

整型

整型的数值范围

整型的数值范围为:
(2占比特位数1=2占比特位数×81)(2占比特位数11=2占比特位数×811)

例如

  • 一个byte类型整数在内存里占8位,可以表示的数值范围为:
    • (21×81=27=128)(21×811=271=127)
  • 一个short类型整数在内存里占16位,可以表示的数值范围:
    • 32768(215)32767(2151)
  • 一个int类型整数在内存里占32位,可以表示的数值范围为:
    • 2147483648(231)2147483647(2311)
  • 一个long类型整数在内存里占64位,表数范围是:
    • (263)(2631)

直接给出的整数值默认为int类型

int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。除此之外,有如下两种情形必须指出:

  • 如果直接将一个较小的整数值(在byte或 short类型的表数范围内)赋给一个byte或 short变量,系统会自动把这个整数值当成byte或者shot类型来处理。也就是 byte a=1,这里的整数1会直接当成byte类型来处理,short x=3,这里的整数3也会直接当成short类型来处理。
  • 如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应在这个整数值后增加l或者L作为后缀。通常推荐使用大写的L,因为英文小写l很容易跟数字1搞混。也就是long a=2147483648;这样写,(2311+1=2147483648) 虽然在Long的表示范围之内,但是编译器还是认为它是一个int类型,2147483648超出了int的表示范围。所以在编译时会报错,正确的写法为long a=2147483648L;

可以把一个较小的整数值(在int类型的表数范围以内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理,Java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型

数值的表示方式

Java中整数值有4种表示方式:十进制、二进制、八进制和十六进制,其中二进制的整数以0b或0B开头;八进制的整数以0开头;十六进制的整数以0x或者0X开头,其中10-15分别以a-f(此处的af不区分大小写)来表示。下面的代码片段分别使用八进制和十六进制的数。

自动类型转换