当前位置: 首页 > 知识库问答 >
问题:

在Java中,数值的提升和降级是如何作用于文字和变量的?[副本]

宗意蕴
2023-03-14
byte byteNumber = 10 * 10;
int x = 10;
int y = 10;

byte byteNumber = x * y;

行字节bytenumber=x*y;标记为错误。我理解表达式x*y的结果是一个整数,但不像文字那样“降级”。即使只有一个变量,比如x*10,结果也不会降级。到底为什么?我相信这与变量类型有关,但在默认情况下,文字是整数,它们可以被“降级”。

我正在努力解决的另一个例子是:我们可以为byte、short或char类型的变量分配整数文本,Java将自动将整数转换为我们声明的变量类型,例如:

short a = 10;
byte b = 12;

另一方面,我们为什么不能这样做呢?

float c = 12.0;
 short a = 10;
 byte b = 12;
public void newMethod(short x, byte y){
    ...
}
newMethod(10, 2)

如果你能搜索一些我能读到这类东西的链接,那就太好了(因为我真的不知道如何搜索这些特定的问题)。

提前谢谢大家。

共有1个答案

殷烨
2023-03-14

您可以查看以下两个链接:

  • 为什么显式类型转换需要从double到float,而不是从int到byte?(我已经在评论中分享过的那个)
  • 隐式类型强制转换不适用于方法参数?

顺便说一下,这两个问题都是由StackOverflow的第一贡献者Jon Skeet回答的:)

 类似资料:
  • 本文向大家介绍基于js的变量提升和函数提升(详解),包括了基于js的变量提升和函数提升(详解)的使用技巧和注意事项,需要的朋友参考一下 一、变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。 上个简历的例子如: 之所以会是以上的打印结果,是由于js的变量提升,实际上上面的

  • 本文向大家介绍详解javascript中的变量提升和函数提升,包括了详解javascript中的变量提升和函数提升的使用技巧和注意事项,需要的朋友参考一下 1在js中只有两种作用域 a:全局作用域 b:函数作用域 在ES6之前,js是没有块级作用域。 首先来解释一下什么是没有块级作用域? 所以此时 是可以打印输出变量a的值。 2:什么是变量提升? 在我们的js中,代码的执行时分两步走的,1、解析

  • §5.1.2和§5.6.2未提及数值提升和加宽如何适用于常数。 下面给出了预期的错误: 但如果它们被宣布为最终版本,则编译时不会出错: 为什么?规格的哪一部分解释了这一点? 我的猜测是它们是编译时间常量,因此被视为整数。

  • 本文向大家介绍JS中作用域和变量提升(hoisting)的深入理解,包括了JS中作用域和变量提升(hoisting)的深入理解的使用技巧和注意事项,需要的朋友参考一下 作用域(Scoping) 对于Javascript初学者来说,一个最迷惑的地方就是作用域;事实上,不光是初学者。我就见过一些有经验的javascript程序员,但他们对scope理解不深。javascript作用域之所以迷惑,是因为

  • 问题内容: 我有一个变量,我想回显一个变量,例如,但是我得到了: bash:意外令牌“ $ x + 1”附近的语法错误 我怎样才能做到这一点? 问题答案: 不需要,POSIX shell允许进行算术评估: 参见 §2.6.4

  • 为什么它会打印?你能详细介绍一下所有的功能吗?