字节类型转换

时间:2013-04-04 10:19:00

标签: java

这是一个基本问题,但我找不到合适的答案。我认为这是因为原始类型自动类型转换

为什么下面的语句会调用print(int x)方法而不是print(char x)方法。

public class Overloading {

    public static void main(String args[])
    {
        byte b='x';
        print(b);
    }

    public static void print(int x)
    {
        System.out.println("Inside int Print "+x);
    }


    public static void print(char x)
    {
        System.out.println("Inside char Print "+x);
    }

    public static void print(float x)
    {
        System.out.println("Inside float Print "+x);
    }


}

3 个答案:

答案 0 :(得分:6)

可用于此method invocation conversion的转化为widening primitive conversion

  

byte to short,int,long,float或double

     

短,int,long,float或double

     

char to int,long,float或double

     

int to long,float或double

     

长期漂浮或加倍

     

浮动加倍

您看到没有bytechar路径。这不是优先事项:如果删除以int为参数的函数,则代码将无法编译。

答案 1 :(得分:2)

byte会自动转换为int而不是char

 primitive types are called the widening primitive conversions:    

    byte to short, int, long, float, or double

参考link第5.1.2节

答案 2 :(得分:0)

编译器以这种方式选择重载方法

byte->short->int->long

有趣的是,如果只留下print(char x),则会出现编译错误

对于char来说是

char->int->long