为什么我';我在java中的实际参数和形式参数中得到编译时错误?

为什么我';我在java中的实际参数和形式参数中得到编译时错误?,java,methods,Java,Methods,在调用方法并传递实际参数时,出现编译时错误 作为short数据类型到字节的形式参数数据类型 但是,当我将作为byte数据类型的实际参数传递给short数据类型的形式参数时,程序编译成功 display((byte)(20)); static void display(short b1){} 这是因为short是比字节“大”的数据类型。一个字节是8位,而short的大小是16位。当您尝试将显式转换为short的整数文本传递给接受字节的方法时,Java知道可能会发生有损转换,并在编译时显示错误

在调用方法并传递实际参数时,出现编译时错误 作为short数据类型到字节的形式参数数据类型

但是,当我将作为byte数据类型的实际参数传递给short数据类型的形式参数时,程序编译成功

display((byte)(20));

static void display(short b1){}
这是因为short是比字节“大”的数据类型。一个字节是8位,而short的大小是16位。当您尝试将显式转换为short的整数文本传递给接受字节的方法时,Java知道可能会发生有损转换,并在编译时显示错误


由于字节数据类型比短数据类型小,因此在第二个示例中,数字提升会自动进行,字节会自动提升为短。

您可以在一个升水罐中装一品脱水;一品脱水罐装不下一升水

short
byte
是不同的数据类型。
short
的范围是
-32768..32767
字节的范围是
-128..127
。适合
字节的所有内容也适合
短字节
;但是,不是所有适合
简短的
的内容都适合一个字节


因此,您可以将
字节
传递给需要
(使用隐式)的方法,但不能将
传递给需要
字节

的方法。您所做的事情就像在一个只包含1滴水的瓶子中放入2滴水,因此,您在方法中假设的字节数据类型的数字范围小于数据类型的范围byte可以包含一个可以用8位表示的值,但是short可以表示一个16位的值。

显示((byte)(20));静态void display(char b1){}那么我在这个偶数字节中出错的原因是1字节(更低),char是2字节(更高)。@Rahulsingh
byte
的范围是-128..127;
char
的范围为0..65535
char
不能表示负数。
display((byte)(20));

static void display(short b1){}