JAVA 基本数据类型长度

本文介绍Java中IEEE754浮点数的基本概念及其比特表示方式,并演示如何使用Float类实现浮点数与比特序列间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
1、整数:包括int,short,byte,long
2、浮点型:float,double
3、字符:char
4、布尔:boolean

 

基本型别大小最小值最大值
boolean----------------
char16-bitUnicode 0Unicode 2^16-1
byte8-bit-128+127
short16-bit-2^15+2^15-1
int32-bit-2^31+2^31-1
long64-bit-2^63+2^63-1
float32-bitIEEE754IEEE754
double64-bitIEEE754IEEE754
void   

注意!:表格里的^代表的是次方哈~

使用 Float 类 节省开发时间
作者: Builder.com
2004-11-16 11:50 AM

即使你可能知道 IEEE 浮点数,你可能也从来没有逐个比特地处理过这类数据。下面我将向你展示如何逐个比特地处理 IEEE 浮点数,下次在你的 Java 项目需要从比特序列创建浮点数时,或者从浮点数创建比特序列时,你就知道Float 类可以为完成这一工作。

IEEE 浮点数介绍

IEEE 754 浮点单精度数字格式定义了一个用于存储浮点数的比特布局。在空比特布局中,一个比特留作符号位,八个比特留作指数,23个比特留作尾数。这些比特是按最重 要比特到最不重要比特进行排列的,如下例所示:



31                             0
|                              |                     
SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

其中:

S = 符号位
E = 指数
M = 尾数

你可以从 IEEE 的站点购买一份 IEEE 浮点数的完整解释。(如果在线搜索 IEEE 754,你应该可以找到免费的版本。)

Float 对 Java 社区的贡献

下面的示例程序使用 Float 的两个方法将一个浮点数转成比特,然后又将这些比特转成一个浮点数。

使用Float.floatToIntBits(float f) 方法可以将一个浮点数转成一个比特序列。这个方法返回一个32位整数,表示你作为参数提供的浮点数的 IEEE 754 比特排列。

使用Float.intBitsToFloat(int bits) 方法可以进行反方向转换。这个方法接受传入的整数作为参数,将这些比特转成一个 IEEE 浮点数。

下面是示例程序:

public class BitsTip {
    public static void main(String args[]) {
        float f = Float.parseFloat(args[0]);
        int bits = Float.floatToIntBits(f);

        System.out.println("bits: " + bits);
        System.out.println("back to float: " + Float.intBitsToFloat(bits));
    }
}

如果你曾经必须要手工进行这种转换,那么你就会很欣赏这两个简单的方法为你节省的工作。如果你正在处理64位数,那么可以选择使用Double 包装器(wrapper)类。这个类提供同样的方法处理IEEE 754 双精度浮点数。

最好选择阅读一下javadoc,查阅里面有关浮点数与比特序列之间的转换的部分,以便完整地了解这些方法都能为你些做什么。

### Java 中的数据类型及其位数和字节长度 #### 基本数据类型Java中,存在八种基本数据类型,每一种都有固定的大小。以下是这些型的详细说明: - **`byte`**: 占用1个字节(8位),范围是从 `-128` 到 `127`[^1]。 - **`short`**: 使用2个字节(16位),可以存储从 `-32,768` 至 `32,767` 的整数值。 - **`int`**: 需要4个字节(32位),能够表达的最小值为 `-2^31` 而最大值则达到 `2^31 - 1`。 - **`long`**: 此型占据8个字节(64位),其取值区间介于 `-2^63` 和 `2^63 - 1` 之间。 对于浮点数而言: - **`float`**: 它同样消耗4个字节(32位),遵循IEEE 754标准来定义单精度浮点数。 - **`double`**: 这是一个双精度浮点数,占用8个字节(64位)。 还有两个特殊的型: - **`char`**: 表示单一字符,采用UTF-16编码方案下的码元单位,因此它也占有2个字节(16位)。这使得它可以容纳更多的国际字符集成员。 - **`boolean`**: 尽管通常认为只占用了1个字节,在某些实现里可能更少;不过具体取决于JVM的具体版本与平台特性。 ```java // 示例代码展示不同数据类型的声明方式 public class DataTypeExample { public static void main(String[] args) { byte b = 10; short s = 200; int i = Integer.MAX_VALUE; // 获取int的最大值 long l = Long.MIN_VALUE; // 获取long的最小值 float f = 3.14f; double d = Math.PI; char c = 'A'; boolean flag = true; System.out.println("Byte value: " + b); System.out.println("Short value: " + s); System.out.println("Int max value: " + i); System.out.println("Long min value: " + l); System.out.printf("Float value with precision %.2f\n", f); System.out.println("Double PI value: " + d); System.out.println("Char value: " + c); System.out.println("Boolean value: " + flag); } } ``` #### 字符串 (`String`) 型 至于字符串(`String`)对象,并不是一个原始数据类型而是由多个字符组成的不可变序列。理论上讲,它的长度是没有上限的——受限于可用堆空间以及特定平台上所能分配给数组的最大尺寸。然而实际上,当创建非常长的字符串时可能会遇到性能瓶颈或者其他技术上的挑战。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值