CoreJavaE10V1P3.3 第3章 Java的基本编程结构-3.3 数据类型

时间:2021-09-26 15:31:42

3.3 数据类型

这里所说的数据类型是指 Java的8中基本数据类型,是原生就存在的。

不同进制数的字面值表示方法

进制 字面值表示方法 例子 是否默认 JDK版本支持
2进制 0b或0B前缀(每4位可用_分隔) 0b1001,0b1111_0100_0010   Java SE 7开始
8进制 0前缀 010    
10进制   010  
16进制 0x或0X前缀 0xCAFE    

  Java中没有unsigned 类型的数

  在Java中谈默认值是没有意义的,一个数据的默认值只有在声明为成员变量或是静态变量以及初始化的时候存在,而没有初始化的变量会出现编译错误。

3.3.1 整数型(4种)

类型 字节数  表示范围 默认值 大致表示范围 字面值表示方法 例子 是否是默认字面值类型 是否推荐使用
byte 1 –128 到 127 0 100        
short 2 –32,768 到 32,767  0 3万        
int 4 –2,147,483,648 到 2,147,483, 647 0 20亿   400
long 8 –9,223,372,036,854,775,808 到9,223,372,036,854,775,807 0L 9*1018 l或L后缀(400L) 400L    

3.3.2 浮点数型(2种)

类型 字节数 表示范围 默认值 有效数字(精度)(10进制下) 字面值表示方法 例子 是否为默认字面值类型 是否推荐使用
float 4 ±3.40282347E+38F 0.0f 6-7位 f或F后缀 3.14F    
double 8  ±1.79769313486231570E+308 0.0d 15位 d或D后缀 3.14D,3.14

16进制指数式浮点数字面值表示方法

底数 表示方法 例子 常规表示方法
以2为底 0x***p***标记(尾数采用16进制,指数采用10进制) 0x1.0p-3 1.0x2-3

3个特殊的浮点数

Double.POSITIVE_INFINITY 正无穷
Double.NEGATIVE_INFINITY 负无穷
Double.NaN 非数(0/0或负数的平方根)

  1.Double类是对double类型的对象化封装,java.lang.Double

System.out.println(2.0 - 1.1)

输出结果是 0.8999999999999999 而不是 0.9 ,浮点数在实际存储时以2进制存储,出现了精度损失,入股数值计算不能有任何舍入误差,使用 BigDecimal 类

3.3.3 字符型(1种)

Java中的char字符表示的是unicode(即UTF-16)编码字符,

类型 字节数 表示范围 默认值 表示方法 例子
char 2 \u0000 到 \uFFFF ‘\u0000’ ‘ ’标记,可使用\u转译和特殊字符转译 ‘A’,‘\u2122’,‘\n’

常用的char字符以及转译字符

转译形式 名称 Unicode值
\n 换行 \u000a 
\r 回车 \u000d 
\t Tab \u0009
\" \u0022 
\' \u0027 
\\ \ \u005c
  π,数字PI的符号 \u03C0
  ™,商标符号 \u2122

  Unicode型转译字符可以在源代码中直接使用

public static void main(String\u005B\u005D args)

  等价于

public static void main(String[] args)

3.3.4 Unicode与char

3.3.5 布尔型

类型 默认值 字节数 表示方法 例子
boolean  false 在编译之后都使用JVM中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节 true,false true,false

boolean与其他类型不可转换,在c/c++中,0表示false,非0表示true,java中不行。