🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### [基本类型的存储](https://lingcoder.gitee.io/onjava8/#/book/03-Objects-Everywhere?id=%e5%9f%ba%e6%9c%ac%e7%b1%bb%e5%9e%8b%e7%9a%84%e5%ad%98%e5%82%a8) 有一组类型在 Java 中使用频率很高,它们需要特殊对待,这就是 Java 的基本类型。之所以这么说,是因为它们的创建并不是通过`new`关键字来产生。通常`new`出来的对象都是保存在堆内存中的,以此方式创建小而简单的变量往往是不划算的。所以对于这些基本类型的创建方法,Java 使用了和 C/C++ 一样的策略。也就是说,不是使用`new`创建变量,而是使用一个“自动”变量。 这个变量直接存储"值",并置于栈内存中,因此更加高效。 Java 确定了每种基本类型的内存占用大小。 这些大小不会像其他一些语言那样随着机器环境的变化而变化。这种不变性也是 Java 更具可移植性的一个原因。 | 基本类型 | 大小 | 最小值 | 最大值 | 包装类型 | | :-: | :-: | :-: | :-: | :-: | | boolean | — | — | — | Boolean | | char | 16 bits | Unicode 0 | Unicode 216\-1 | Character | | byte | 8 bits | \-128 | +127 | Byte | | short | 16 bits | \- 215 | \+ 215\-1 | Short | | int | 32 bits | \- 231 | \+ 231\-1 | Integer | | long | 64 bits | \- 263 | \+ 263\-1 | Long | | float | 32 bits | IEEE754 | IEEE754 | Float | | double | 64 bits | IEEE754 | IEEE754 | Double | | void | — | — | — | Void | 所有的数值类型都是有正/负符号的。布尔(boolean)类型的大小没有明确的规定,通常定义为取字面值 “true” 或 “false” 。基本类型有自己对应的包装类型,如果你希望在堆内存里表示基本类型的数据,就需要用到它们的包装类。代码示例: ~~~ char c = 'x'; Character ch = new Character(c); ~~~ 或者你也可以使用下面的形式: ~~~ Character ch = new Character('x'); ~~~ 基本类型自动转换成包装类型(自动装箱) ~~~ Character ch = 'x'; ~~~ 相对的,包装类型转化为基本类型(自动拆箱): ~~~ char c = ch; ~~~ 个中原因将在以后的章节里解释。