程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了基本类型'short'-Java中的强制转换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决基本类型'short'-Java中的强制转换?

开发过程中遇到基本类型'short'-Java中的强制转换的问题如何解决?下面主要结合日常开发的经验,给出你关于基本类型'short'-Java中的强制转换的解决方法建议,希望对你解决基本类型'short'-Java中的强制转换有所启发或帮助;

正如上文短C# (也为其他语言编译器以及Java一样)

从short到int,long,float,double或decimal进行了预定义的隐式转换。

你不能将较大存储大小的非文字数字类型隐式转换为短类型(有关整数类型的存储大小,请参阅“整数类型表”)。例如,虑以下两个短变量x和y:

short x = 5, y = 12;

以下赋值语句将产生编译错误,因为赋值运算符右侧的算术表达式默认情况下计算为int。

short z = x + y;   // Error: no conversion from int to short

要解决此问题,请使用强制转换:

short z = (short)(x + y);   // OK: explicit conversion

尽管目标变量具有相同的存储大小或更大的存储大小,但是可以使用以下语句:

int m = x + y;
long n = x + y;

一个很好的后续问题是:

“为什么赋值运算符右侧的算术表达式默认计算为int”?

第一个答案可以在以下位置找到:

分类并正式验证整数常量折叠

在Java语言规范定义究竟如何整数来表示,如何整数算术表达式进行评估。这是Java的重要属性,因为该编程语言已设计为可用于Internet上的分布式应用程序。需要Java程序独立于执行它的目标机器来产生相同的结果。

相比之下,C(以及大多数广泛使用的命令式和面向对象编程语言)更加草率,并保留了许多重要特征。这种不正确的语言规范背后的意图很明显。通过使用目标处理器中内置的算术运算实例化源程序的整数算术,可以使相同的C程序在16位,32位甚至64位体系结构上运行。这样可以产生更有效的代码,因为它可以直接使用可用的机器操作。只要整数计算仅处理“足够小的”数字,就不会出现一致的情况。

从这个意义上讲,C整数算法是一个占位符,它不是由编程语言规范精确定义的,而是仅通过确定目标机器来完全实例化的。

Java精确定义了如何表示整数以及如何计算整数算术。

      Java Integers
--------------------------
Signed         |  Unsigned
--------------------------
long  (64-bit) |
int   (32-bit) |
short (16-bit) |  char (16-bit)
byte  (8-bit)  |

解决方法

我对short Java中的原始类型有疑问。我正在使用JDK 1.6。

如果我有以下情况:

short a = 2;
short b = 3;
short c = a + b;

编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此:

short c = (short) (a + b);

确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是{-32,768,32767}。当我想执行操作-,*,/(我没有检查其他操作)时,还需要进行强制转换。

如果对原始类型执行相同操作int,则无需将aa + bb强制转换为int。以下工作正常:

int aa = 2;
int bb = 3;
int cc = aa +bb;

我在设计一个类时发现了这一点,我需要添加两个short类型的变量,并且编译器希望我进行强制类型转换。如果使用两个类型的变量执行此操作int,则无需强制转换。

一句话:原始类型也会发生相同的情况byte。因此,这可行:

byte a = 2;
byte b = 3;
byte c = (bytE) (a + b);

但这不是:

byte a = 2;
byte b = 3;
byte c = a + b;

对于long,float,double,和int,也没有必要投。仅用于shortbyte值。

大佬总结

以上是大佬教程为你收集整理的基本类型'short'-Java中的强制转换全部内容,希望文章能够帮你解决基本类型'short'-Java中的强制转换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。