【问题标题】:What is the value of an empty cell in a char array (Java)?char 数组(Java)中空单元格的值是多少?
【发布时间】:2014-04-11 13:07:10
【问题描述】:

请考虑这种情况:

char[] array = new char[4];
array[0] = 'a';
array[1] = '3';
array[3] = 'q';

如您所见,array[2] 从未“充满”任何东西。 array[2] 的值是多少?

在遍历 char 数组以查找“空”单元格时,我需要检查什么?

【问题讨论】:

标签: java arrays char


【解决方案1】:

array[2] 将填充null char literal。其值为\u0000

char 是原始类型。这意味着它永远不能持有null,所以像intdouble 和其他的一样,它需要一些起始值。对于int,它是0,对于char,它是\u0000,它实际上计算为0

您可以查看原始类型here的起始值。

【讨论】:

  • 所以在一个大小为 2 的整数数组中,如果我用整数 0 填充一个单元格并将另一个留空......这是否意味着两者具有相同的值?因为 int 的 null 也是 0。
  • 对于任何原始类型都没有null - 它们被初始化为默认值。如果将数组中的第一个值设置为 0 并保留第二个值,它们将具有相同的值。 ideone.com/tB2NxQ
【解决方案2】:

答案是:(char)0。

基元的默认值为 0、0.0f、0.0(双精度)、(字符)0 和 false(布尔值)。

适用于数组和单个变量。

【讨论】:

    【解决方案3】:

    在 Java 中,char[] array = new char[4]; 会将与该数组关联的所有内存设置为零。因此,在这种情况下,每个元素都将具有空字符文字 '\0' 的值。

    (并非所有语言都如此,例如,在 C 和 C++ 中,内存是单元化的,并且在初始化之前访问它在技术上是未定义的行为)。

    【讨论】:

    • 这不是“技术上未定义的行为”,它只是未定义的行为:-)(而且是一个非常糟糕的主意)。
    【解决方案4】:

    数组的空单元格将始终为 0,因为数组会自动初始化为 0,因此它将为 '0'

    【讨论】:

      【解决方案5】:

      就像其他人已经说过的那样,默认值为 null '\u0000'。 如果您尝试将其打印出来,它将是一个空值。 (意思是你看不到)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 2016-04-06
        • 2021-03-09
        • 1970-01-01
        相关资源
        最近更新 更多