为什么我们不为短类型添加"s"后缀?

PVP*_*PVP 7 java

为什么我们s不像short s = 2s;我们用float写的那样用短数据类型写float f = 1.23f

我知道当我们float默认编写时,编译器会将其视为double并为其分配8个临时字节,当它尝试将该8字节复制到float4时会导致类型错误,这就是我们f在初始化之后编写的原因float,但是为什么我们不做short默认的类似的东西int是文字类型?

And*_*mas 5

Java语言规范允许长字面量的类型后缀为Ll。但是,它没有为短值提供类型后缀。没必要,因为:

如果变量的类型为byte,short或char,并且常量表达式的值可表示为变量的类型,则可以使用缩窄的原始转换。

  • 正如@Sapphire_Brick 所提到的,没有必要使用缩写后缀是完全不正确的。这是非常有必要的,因为当我们在参数中使用 Short 作为类型时,如果没有显式强制转换,我们就无法将 int 文字传递给它。由于转换过多,代码的可读性会下降。同样的情况也适用于将短+短再次转换为短的要求。这也是一个错误的设计选择,一旦你试图优化你的数据结构以不消耗太多内存,当你不需要高于 32767 的整数时,你最终会得到如此丑陋的代码和如此多的工作,你想要转储爪哇。 (3认同)
  • Thomus sir 那么任何可以由浮点数表示的值也可以由默认类型 double? 表示。 (2认同)

ano*_*non 1

这是因为从 double 到 float 会截断值并丢失数据,因此编译器不会自动执行此操作,您必须明确告诉它。但是,当从较小的大小(short)转换为较大的大小(int)时,它是自动完成的,因为编译器只需填充数据并且不存在潜在的数据丢失,与前一种情况相反。