java 的八种基本数据类型

四种整数类型 (byte、short、int、long)

  • byte:8 位,用于表示最小数据单位,如文件中数据,-128 ~ 127
  • short:16 位,很少用,-32768 ~ 32767
  • int:32 位,最常用,-231 ~ 231-1
  • long:64 位,较常用,-263 ~ 263-1

注意事项:

  • 直接写出的常数叫直接量( 或字面量) ,整数字面量默认都为 int 类型。
  • 在定义的 long 型数据后面要加 L 或 l 。
  • 对于小于 32 位数的变量,一律按 int 结果计算。
  • 强制转换符要比数学运算符优先级高。

两种浮点数类型 (float 、double)

float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。
double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾数。

二进制浮点数: 1010100010 = 101010001.02 = 10101000.10210 (2 次方) = 1010100.010* 211 (3 次方) = .1010100010*21010 (10 次方)
尾数:.1010100010
指数:1010
基数:2

注意事项:

  • 浮点数字面量默认都为 double 类型,在定义的 float 型数据后面要加 F 或 f 。
  • double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X 。
  • float 的精度没有 long 高,有效位数(尾数)短。
  • float 的范围大于 long ,float 的指数可以很大。
  • 浮点数是不精确的,不能对浮点数进行精确比较。

一种字符类型 (char)

char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0 ~ 216-1 (65535) 。

注意事项:

不能为 0 个字符。转义字符:\n 表示换行、\r 表示回车、\t 表示 Tab 字符、\" 表示双引号、\\ 表示一个 \ 。两字符 char 中间用 “+” 连接,在内部先把字符转成 int 类型,再进行加法运算。char 类型本质就是二进制的整数,在显示的时候经过 “处理” 才显示为字符。

一种布尔类型 (boolean)

true 表示逻辑真,false 表示逻辑假。

boolean:32 位,单个数据;8位,数组。

数据类型所占内存大小

8位(1 字节):Byte(字节型)
16位(2 字节):short(短整型)、char(字符型)
32位(4 字节):int(整型)、float(单精度型 / 浮点型)
64位(8 字节):long(长整型)、double(双精度型 / 浮点型)

注意:
boolean(布尔类型)声明为一个变量是 4 字节,声明为数组则只占 1 字节。

类型转换

自动转换:

  • byte => short => int => long => float => double
  • char => int

强制转换:

  • 会损失精度,产生误差,小数点以后的数字会舍弃。
  • 容易超过取值范围。