当前位置: 首页 > 面试题库 >

int上的基本算术运算-Java

狄兴业
2023-03-14
问题内容

我最近注意到Java关于Java基本算术运算的特质。用下面的代码

byte a = 3;
byte b = 4;
byte c = a * b;

我收到“类型不匹配”的编译错误…

都是基本的算术运算在Java中(+-*/)只能对原始数据类型进行int和高阶(longdouble,等),而在算术运算byteshort是第一投地int,然后评估?


问题答案:

上的操作bytechar并且short被加宽到int除非编译器可以确定该值的范围。

final byte a = 3, b = 4;
byte c = a * b; // compiles

final byte a = 3, b = 40;
byte c = a * b; // compiles

final int a = 3, b = 4;
byte c = a * b; // compiles !!

byte a = 3, b = 4;
byte c = a * b; // doesn't compile as the result of this will be `int` at runtime.

final byte a = 30, b = 40;
byte c = a * b; // doesn't compile as the value is too large, will be an `int`

BTW即使发生溢出也会编译。:]

final int a = 300000, b = 400000;
int c = a * b; // compiles but overflows, is not made a `long`


 类似资料:
  • 问题内容: 我想对像,,…(不包括和)这样的包装器类型,每个操作仅使用一种通用方法执行基本的算术运算,例如加法,减法,乘法和除法。 我尝试使用泛型类执行以下操作(作为补充)。 它发出一个编译时错误, 运算符+不能应用于E,E 有没有办法使用这种通用版本来实现这种操作? 问题答案: 不,没有办法做到这一点,否则它将内置到Java中。类型系统不够强大,无法表达这种东西。

  • 本文向大家介绍C#程序执行所有基本算术运算,包括了C#程序执行所有基本算术运算的使用技巧和注意事项,需要的朋友参考一下 C#中的基本算术运算符包括以下内容- 运算符 描述 + 加两个操作数 -- 从第一个减去第二个操作数 * 将两个操作数相乘 / 将分子除以除分子 % 模运算符和整数除后的余数 ++ 增量运算符将整数值增加一 - 减法运算符将整数值减一 要添加,请使用加法运算符- 同样,它适用于减

  • 我想执行基本的算术运算,如加法,减法,乘法和除法,每个操作仅使用一个通用方法,用于包装类型,如,,...(不包括和)。 我尝试使用泛型类做如下(用于添加)。 它会发出编译时错误, 运算符不能应用于E,E 有没有办法使用这种通用版本来实现这种操作?

  • 本章介绍Elixir的基本类型。Elixir主要的基本类型有: 整型(integer),浮点(float),布尔(boolean),原子(atom,又称symbol符号), 字符串(string),列表(list)和元组(tuple)等。 它们在iex中显示如下: iex> 1 # integer iex> 0x1F # integer iex> 1.0

  • 涉及函数cv2.add(),cv2.addWeighted() 一、图像加法 使用cv2.add()将两幅图像进行加法运算,也可以直接使用numpy,res=img1+img2.两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。 openCV的加法是一种饱和操作,而numpy的加法是一种模操作。 x=np.uint8([250]) y=np.uint8([10]) print(c

  • 考虑以下代码: 这会产生编译错误,因为添加2字节的结果是Int。 为了解决这个问题,我需要手动将结果转换回字节: 这是非常反直觉的。为什么算术运算符是这样工作的?