数据类型结构图

  • 基本数据类型

    • 布尔值 (true / false)

    • 数值类型

      • 定点类型

        • 字符 char

        • 字节 byte

        • 短整数 short

        • 整数 int

        • 长整数 long

      • 浮点类型

        • 单精度浮点数

        • 双精度浮点数

  • 引用数据类型

    • 类或枚举或接口

    • 数组

基本数据类型

由上图可知,java基本数据类型只有8种。即布尔值(boolean),字符(char),字节(byte),短整数(short),整数(int),长整数(long),单精度浮点(float)、双精度浮点(double)。

类型 占用位数 数值范围 初始值 标准
boolean 8 只有true和false false
char 16 从'u0000'到'uFFFF',即0到65535 'u0000' ISO Unicode字符集
byte 8 从-128到+127,即-2^7 - 2^7-1 (byte)0
short 16 -2^16 - 2^16-1 (short)0
int 32 -2^31 - 2^31-1 0
long 64 -2^63 - 2^63-1 0L
float 32 范围不知道怎么算 0.0f IEEE 754标准
double 64 范围不知道怎么算 0.0d IEEE 754标准

java中,在书写一个数组时,可以用后缀标示数据类型。例如

0L 长整数类型的0
0.0f 代表单精度浮点
0.0d 代表双精度浮点

直接量

直接量通俗的讲法就是这里显式地表示基本数据类型数据、字符串值和空引用值的表达式,该表达式中没有运算符号。
直接量其实是与之前的基本数据类型是一一相关的。

布尔值

只有truefalse

字符(char)直接量

java采用的是ISO规定的Unicode字符集。每个字符占2个字节,即16位。字符的写法由4种:

  • 采用整数直接量的写法。该整数的取值范围为0~65535

    System.out.print((char)88);
    //输出 X
  • 用单引号括起来的单个字符。例如'h','奥'等。

  • 用单引号括起来的Unicode字符。例如'u0061'等。用'u'引导,后面接着4位16进制

  • 用单引号括起来的转义字符。例如't'表示制表符。

字节、短整数和整数的直接量

三者的表示方式类似。仅仅是整数的范围不一致。其可以有下列三种进制。

  • 十进制。由+、-、0~9组成的整数形式。需要注意,除了整数0之外,其余整数的第一个数字不能是0,否者会被java理解成8进制

  • 八进制。由数字0引导,用+、-、0~9组成。

  • 十六进制。由0x或者0X引导。由+、-、数字0~9和字符a~f, A~F组成。

长整数直接量

与整数类似,但是需要在整数后直接加上L或者l

单精度浮点数和双精度浮点数

通常由+、-、十进制消暑、指数再加上表示精度的后缀表示。
小数点前或后可以有一侧没有数字。
例如.02f, 2.f

字符串直接量

例如:"Hello word"

null直接量

标示空的引用值,不指向任何对象。

变量

java的变量一般有四个基本属性:变量名、数据类型、储存单元、变量值。
变量名和数据类型没啥好说的。
每一个变量都拥有一个存储单元。存储单元的大小由数据类型决定。在变量的纯粗单元中存放的事该变量的变量值。
如果变量值的数据类型是基本数据类型,那么该变量的储存的是具体的数值。
如果变量值的数据类型是引用数据类型,则在变量的存储单元中存放的事引用值。引用值指向的是一个具体的变量。

java在使用一个变量之前,必须线定义该变量。
定义后需要对变量进行初始化。
初始化之前,该变量的存储单元中存放的内容是该变量的初始值。引用类型的变量初始值是null。

数据类型转换

各个数据类型在数据类型转换中具有强弱关系。

byte < short -|
              |- < int < long < float < double
        char -|

这里的强弱其实是指哪个数据类型覆盖的范围更广。
boolean 不能与其它数据类型进行互相转换。
弱类型可以通过直接赋值的方式,隐式地转换为强类型。
例如 double x = 1;

强类型的数据可以转化成弱类型的数据。这叫强制转换。该转换过程可能会伴随着信息的丢失。

int i = (int)2.03

Char
506 声望33 粉丝

hello world