gpt4 book ai didi

java - 如何将 char 值传递给 int 参数的方法

转载 作者:行者123 更新时间:2023-11-30 02:06:04 26 4
gpt4 key购买 nike

即使传递的值在可接受的范围内,以下代码也会出现编译错误。

案例1

void test(byte a, int b) { }

如果上面的方法被称为 test(2,3); 它会给出编译错误,因为编译器知道 test 是一个接受两个 int 参数的方法,但是它有一个字节整数参数。

但是byte值可以隐式类型转换int,那么这里有什么问题呢?

byte x=2; //valid as value is in between -128 to 127.

与函数调用中传参的情况相同test(2, 3),2可以赋值给测试方法参数byte a,但是为什么会有一个编译错误。

案例2

void test(int ch) { }

上面的代码接受 int 参数,但是当传递 char 值时,它会成功编译。所以,这是奇怪的行为。

有人认为,当文字值单独分配给变量而不是方法调用时,这种隐式转换适用。 (同意案例1,那么案例2呢)。

如果是这种情况,为什么在上述方法中将字 rune 字传递给 int 参数(方法调用中的类型转换)。

最佳答案

  1. 与 long (0L) 或 float (0F) 不同,您不能简单地将字节传递给方法。调用该方法时必须转换为字节。发生这种情况是因为您传递了一个整数,而它需要一个字节。

    test((byte) 2, (byte) 3);

    通常的方法是将数组中的字节作为 byte[] 处理。

  2. 原始类型 char 与无符号(大于零)整数没有什么不同,它可以包含从 0 到 65535 的值。了解更多信息,请访问 Oracle 的 documentation关于原始类型。

    char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).

关于java - 如何将 char 值传递给 int 参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51338251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com