【问题标题】:What is the Data Type Length in JavaJava中的数据类型长度是多少
【发布时间】:2017-09-20 23:54:27
【问题描述】:

各位朋友,我想知道 Java 中的所有数据类型及其总长度(MAX 和 MIN) 例如 多头 -9,223,372,036,854,775,808 至 +9,223,372,036,854,775,807 朋友们能不能帮帮我。

【问题讨论】:

  • 使用谷歌。它有答案
  • 为什么你觉得我们能给出比官方java doc更好的答案? docs.oracle.com/javase/tutorial/java/nutsandbolts/…
  • @Ray 当他的坏问题仍然得到 2 次赞成时,为什么 OP 不应该是懒惰的?这是您在 Stack Overflow 上应该记住的一件事:无论您的问题有多糟糕,总会有人认为这是一个好问题。 (是的,这是非常非常可悲的)

标签: java type-conversion abstract-data-type


【解决方案1】:

如您所见 here
如果您使用无符号类型,则只需计算
ans = (2 power number_of_bits) - 1
否则计算
ans = (2 power number_of_bits - 1)
范围为
[-ans,ans-1]
祝你有美好的一天:)

【讨论】:

    【解决方案2】:

    查看这个链接,是oracle的官方文档,里面有详细的解释。

    Source Link - Oracle Documentation

    为了快速参考,引用文档中的要点。

    字节

    字节数据类型是一个 8 位有符号二进制补码整数。它的最小值为 -128,最大值为 127(含)。字节数据类型可用于在大型数组中节省内存,其中内存节省实际上很重要。它们也可以用来代替 int ,它们的限制有助于澄清您的代码;变量的范围有限这一事实可以作为一种文档形式。

    short 数据类型是一个 16 位有符号二进制补码整数。它的最小值为 -32,768,最大值为 32,767(含)。与 byte 一样,适用相同的准则:您可以在大型数组中使用 short 来节省内存,在内存节省实际上很重要的情况下。

    int

    默认情况下,int 数据类型是 32 位有符号二进制补码整数,最小值为 -231,最大值为 231-1。在 Java SE 8 及更高版本中,您可以使用 int 数据类型来表示一个无符号的 32 位整数,其最小值为 0,最大值为 232-1。使用 Integer 类将 int 数据类型用作无符号整数。有关更多信息,请参阅数字类部分。在 Integer 类中添加了 compareUnsigned、divideUnsigned 等静态方法,以支持无符号整数的算术运算。

    long 数据类型是 64 位二进制补码整数。带符号的 long 的最小值为 -263,最大值为 263-1。在 Java SE 8 及更高版本中,您可以使用 long 数据类型来表示无符号的 64 位 long,其最小值为 0,最大值为 264-1。当您需要比 int 提供的值范围更广的值时,请使用此数据类型。 Long 类还包含 compareUnsigned、divideUnsigned 等方法,以支持 unsigned long 的算术运算。

    浮动

    float 数据类型是单精度 32 位 IEEE 754 浮点数。它的值范围超出了本次讨论的范围,但在 Java 语言规范的浮点类型、格式和值部分中指定。与 byte 和 short 的建议一样,如果您需要在大型浮点数数组中节省内存,请使用浮点数(而不是双精度数)。此数据类型绝不应用于精确值,例如货币。为此,您需要改用 java.math.BigDecimal 类。 Numbers and Strings 涵盖了 Java 平台提供的 BigDecimal 和其他有用的类。

    双倍

    双精度数据类型是双精度 64 位 IEEE 754 浮点数。它的值范围超出了本次讨论的范围,但在 Java 语言规范的浮点类型、格式和值部分中指定。对于十进制值,此数据类型通常是默认选择。如上所述,这种数据类型决不能用于精确值,例如货币。

    布尔值

    布尔数据类型只有两个可能的值:真和假。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一种信息,但它的“大小”并不是精确定义的。

    字符

    char 数据类型是单个 16 位 Unicode 字符。它的最小值为 '\u0000'(或 0),最大值为 '\uffff'(或 65,535 包括在内)。

    除了上面列出的八种原始数据类型之外,Java 编程语言还通过 java.lang.String 类提供对字符串的特殊支持。用双引号将字符串括起来会自动创建一个新的 String 对象;例如,String s = "这是一个字符串";。字符串对象是不可变的,这意味着一旦创建,它们的值就不能改变。 String 类在技术上不是原始数据类型,但考虑到该语言对它的特殊支持,您可能会倾向于这样认为。您将在简单数据对象中了解有关 String 类的更多信息

    【讨论】:

      【解决方案3】:

      我认为您可以通过此链接找到所有信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

      • byte:byte 数据类型是一个 8 位有符号二进制补码整数。 它的最小值为 -128,最大值为 127 (包括的)。字节数据类型可用于节省内存 大型数组,其中内存节省实际上很重要。他们能 也可以用来代替 int ,它们的限制有助于澄清你的 代码;变量的范围有限这一事实可以作为一种形式 文档。

      • short:short 数据类型是一个 16 位有符号二进制补码整数。它的最小值为 -32,768,最大值为 32,767(含)。与字节一样,适用相同的准则:您可以 在大型数组中使用short来节省内存,在这种情况下 节省内存实际上很重要。

      • int:默认情况下,int数据类型为32位有符号二进制补码整数,最小值为-231,最大值为 值为 231-1。在 Java SE 8 及更高版本中,您可以使用 int 数据类型 表示一个无符号的 32 位整数,其最小值为 0,最大值为 232-1。使用 Integer 类使用 int 数据 类型为无符号整数。请参阅数字类部分 更多信息。 compareUnsigned、divideUnsigned 等静态方法 等已添加到 Integer 类以支持算术 无符号整数的运算。

      • long:long 数据类型是 64 位二进制补码整数。有符号长整数的最小值为 -263,最大值为 263-1。在 Java SE 8 及更高版本中,您可以使用 long 数据类型 表示一个无符号的 64 位长,其最小值为 0 和 最大值为 264-1。当您需要一系列数据时使用此数据类型 比 int 提供的值更宽的值。 Long 类还包含 支持 compareUnsigned、divideUnsigned 等方法 unsigned long 的算术运算。

      • float:float 数据类型是单精度 32 位 IEEE 754 浮点数。它的取值范围超出了本文的范围 讨论,但在浮点类型、格式、 Java 语言规范的值部分。与 字节和短的建议,使用浮点数(而不是双精度) 如果您需要在大型浮点数数组中节省内存。 此数据类型绝不应用于精确值,例如 货币。为此,您需要使用 java.math.BigDecimal 而是上课。数字和字符串涵盖 BigDecimal 和其他有用的 Java平台提供的类。

      • double:double 数据类型是双精度 64 位 IEEE 754 浮点数。它的取值范围超出了本文的范围 讨论,但在浮点类型、格式、 Java 语言规范的值部分。对于十进制 值,这种数据类型一般是默认选择。如前所述 上面,这种数据类型不应该用于精确值,例如 作为货币。

      • boolean:boolean 数据类型只有两个可能的值:true 和 false。将此数据类型用于跟踪真/假的简单标志 状况。这种数据类型代表一位信息,但它的 “大小”不是精确定义的。

      • char:char 数据类型是单个 16 位 Unicode 字符。它的最小值为“\u0000”(或 0),最大值为 '\uffff'(或 65,535 包括在内)。

      【讨论】:

      • StringBigDecimalBigInteger...呢?
      • Object类没有定义长度字段,一个Object也没有。长度字段仅针对数组类型定义。它是隐式定义的。 BigInteger 的特殊情况是它在内部使用 int[] 来表示您使用的巨大数字。因此,这实际上取决于您存储在其中的数字的大小。
      • 但它们在某些方面都受到限制,主要是受你的记忆影响
      • 是的,但这与所提出的问题不同。他想知道长度,而 Object 类没有定义长度。所以是的,它们都受到你的记忆的限制,但这取决于每个对象的值。你同意吗?
      • 是的,但仍应提及它们。我猜他有作业要找出所有数据类型及其长度(也有这个任务)。因此至少应该以没有固定长度的方式提及它们
      【解决方案4】:

      如果您需要在运行时访问最小值/最大值,大多数包装类都有静态的最终 MIN_VALUE 和 MAX_VALUE 常量:

          System.out.println("Float min value : " + Float.MIN_VALUE + ", max value :" + Float.MAX_VALUE);
          System.out.println("Integer min value : " + Integer.MIN_VALUE + ", max value :" + Integer.MAX_VALUE);
          System.out.println("Double min value : " + Double.MIN_VALUE + ", max value :" + Double.MAX_VALUE);
          System.out.println("Byte min value : " + Byte.MIN_VALUE + ", max value :" + Byte.MAX_VALUE);
          System.out.println("Long min value : " + Long.MIN_VALUE + ", max value :" + Long.MAX_VALUE);
          System.out.println("Short min value : " + Short.MIN_VALUE + ", max value :" + Short.MAX_VALUE);
      

      【讨论】:

        猜你喜欢
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 2010-09-17
        • 2011-11-24
        相关资源
        最近更新 更多