Java 将char变量乘以int

Java 将char变量乘以int,java,char,logic,Java,Char,Logic,以下代码: public class test { public static void main(String[] args) { char ch =65; System.out.println(ch); } } 生成以下输出: A 65 但以下代码: public class test { public static void main(String[] args) { char ch =65; Sys

以下代码:

public class test
{
    public static void main(String[] args) {
        char ch =65;
        System.out.println(ch);
    }
}
生成以下输出:

A
65
但以下代码:

public class test {
    public static void main(String[] args) {
       char ch =65;
       System.out.println(ch*1);
    }
}
生成以下输出:

A
65
为什么,为什么Java不将int输出从“ch*1”转换回char?

因为println有多个签名,并且在代码中调用两个不同的方法:

第一个println printlnch;电话:

以及第二printlnch*1;电话:

因为ch*1是一种算术运算,它返回一个int而不是char,因为println有多个签名,并且在代码中调用两种不同的方法:

第一个println printlnch;电话:

以及第二printlnch*1;电话:

由于ch*1是一种算术运算,当您将字符乘以整数时,它返回的是整数而不是字符,因此结果是整数而不是字符

这意味着System.out.printlnch;调用printlnchar x,而System.out.printlnch*1;调用printlint x

printlnchar调用的printchar有以下注释:

打印一个字符。根据平台的默认字符编码,字符被转换为一个或多个字节,这些字节完全按照writeint方法的方式写入

将字符乘以整数时,结果是整数,而不是字符

这意味着System.out.printlnch;调用printlnchar x,而System.out.printlnch*1;调用printlint x

printlnchar调用的printchar有以下注释:

打印一个字符。根据平台的默认字符编码,字符被转换为一个或多个字节,这些字节完全按照writeint方法的方式写入


因为你在做乘法,所以Java会自动转换成字符的数值。

因为你在做乘法,所以Java会自动转换成字符的数值。

在Java中,每当算术运算涉及两种数据类型时,较小的类型会转换成较大的类型。执行以下操作时,在代码中:

ch*1,其数据类型为字符和整数,较大的类型为整数,因此执行重载的printlint x

通常,获得的结果数据类型取决于操作数类型


请参阅以进一步了解。希望这能澄清。

在Java中,每当一个算术运算涉及两种数据类型时,较小的类型将转换为较大的类型。执行以下操作时,在代码中:

ch*1,其数据类型为字符和整数,较大的类型为整数,因此执行重载的printlint x

通常,获得的结果数据类型取决于操作数类型


请参阅以进一步了解。希望这能澄清问题。

你认为为什么应该这样做?将整数和字符相乘。在我看来,返回int比返回char更符合逻辑。而且,不管您认为什么是合乎逻辑的,Java语言规范都定义了这样的操作是如何完成的:char被提升为int,然后两个int相乘,这就得到了int。您认为为什么应该这样做?将整数和字符相乘。在我看来,返回int比返回char更符合逻辑。而且,不管您认为逻辑与否,Java语言规范定义了这些操作是如何完成的:char被提升为int,然后两个int相乘,得到int。