Java 理解字符转换

Java 理解字符转换,java,casting,char,Java,Casting,Char,我不理解java中的强制转换,尤其是字符强制转换。我无法预测这段代码的结果,因为我不明白char的转换将复制什么。一些解释会很好!谢谢 public class test { public static void main(String[] args) { int u = 10; double v = 22.105; byte w = 100; char x = 'a'; float y = 20.5f

我不理解java中的强制转换,尤其是字符强制转换。我无法预测这段代码的结果,因为我不明白char的转换将复制什么。一些解释会很好!谢谢

public class test {
    public static void main(String[] args) {



    int u = 10;

        double v = 22.105;

        byte w = 100;

        char x = 'a';

        float y = 20.5f;

        short z = 50;

        double d_Value = (float) ((char) (u/v) + y);

        Out.print(d_Value);

    }}
char是一种基于整数的数据类型,因此您将失去u/v上的双精度结果的精度,即0数字或\0 char。然后再加上20.5F得到最终结果:20.5


强制转换的优先级高于语言中的大多数运算符,因此强制转换在+运算之前是相关的。

那么在u/v和char强制转换之后,u/v除法的值是多少?0?在强制转换之前,它是int u/double v,由于两个不匹配的数据类型被提升为double,因此会产生double。所以在这一点上的值是0.45238…,但是通过将它转换成char,类似于转换成int,这个数字变成了0。哦,好的,所以char的行为基本上就像你将它转换成int一样?非常感谢。Java在他们的教程中有一个运算符优先级表,但我还没有找到强制转换优先级的官方/JLS源代码。与数组下标[index]和成员访问一起,强制类型的优先级高于任何算术运算符,并且在它们之前进行计算。首先计算u/v的唯一原因是因为它是一个括号括起来的表达式,并且正确,它们相似,但char的最大大小较小;如果你有一个更大的数字要处理,你必须开始担心溢出