【问题标题】:What does it mean if a byte has single quotes ( ' ' ) around a number?如果一个字节在数字周围有单引号(''),这意味着什么?
【发布时间】:2015-05-29 00:34:30
【问题描述】:

我在计算机科学课上的一个问题是这个问题。

byte fun = '0';
System.out.println(fun);

答案是 48,但我班上没有人知道如何使用它,或者它意味着什么。我们知道字节是什么,但是在它们周围加上单引号是什么意思?

【问题讨论】:

  • Google 查找 UnicodeTable 并检查其中的索引 0 字符(十进制)

标签: java byte


【解决方案1】:

任何字符的单引号代表一个字符文字。

'0' 是字符 0(其类型为 char)的文字,其数值为 48。它可以分配给 byte 变量而无需显式类型转换,因为 48 是byte

【讨论】:

    【解决方案2】:

    单引号用于在 Java 源代码中编写 char 值文字。

    因此'0'代表一个char值;并且有一个隐式转换为字节

    (请参阅Java - why does char get implicitly cast to byte (and short) primitive, when it shouldn't? 了解原因)

    【讨论】:

      【解决方案3】:

      单引号中的值不是byte,而是char 文字。 Java 将其转换为它的 UNICODE-16 数值以进行赋值。

      之所以会产生引号括起来的字符是一个字节的错觉,是因为 Java 检查该值是否在一个字节的范围内,并允许您在不需要时跳过强制转换。对于分配给shortbyte 类型变量的整数文字也是如此:

      byte b = 100;
      

      即使100int 类型的文字(比byte 更宽),上面的代码也会编译,因为编译器知道实际值适合byte

      这样的赋值并非普遍适用:如果您使用 UNICODE-16 值大于 128 的字符,则会出现编译时错误。

      例如,这不会编译

      byte a = 'ё';
      

      触发错误

      错误:不兼容的类型:从 char 到 byte 的可能有损转换

      【讨论】:

      • 有一个错字:wold(会吗?)。
      猜你喜欢
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多