📜  扩展Java中的原始转换

📅  最后修改于: 2020-02-14 12:28:13             🧑  作者: Mango

这是给出的一个小代码段。尝试猜测输出

public class Test
{
    public static void main(String[] args)
    {
        System.out.print("Y" + "O");
        System.out.print('L' + 'O');
    }
}

乍一看,我们希望可以打印出“ YOLO”。
实际输出:
“ YO155″。
说明:
当我们使用双引号时,将文本视为字符串,并打印“ YO”,但是当我们使用单引号时,字符“ L”和“ O”将转换为int。这称为扩展原始转换。转换为整数后,将数字相加(“ L”为76,“ O”为79)并打印155。
现在尝试猜测以下输出:

public class Test
{
    public static void main(String[] args)
    {
        System.out.print("Y" + "O");
        System.out.print('L');
        System.out.print('O');
    }
}

输出:  YOLO
说明现在将打印“ YOLO”而不是“ YO7679″。这是因为仅当出现类似’+’的运算符且期望两侧都至少为整数时,才会发生数据类型的转换。
扩展原语转换适用于转换以下规则指定的一个或两个操作数。

  • 如果一个操作数的类型为double,则另一个将转换为double。
  • 如果其中一个操作数的类型为float,则另一个将转换为float。
  • 如果其中一个操作数的类型为long,则另一个将转换为long。
  • 两个操作数都将转换为int类型