为什么在构造函数中不调用短数据类型

时间:2016-06-14 05:38:40

标签: java

public class Overloaded {

    Overloaded(byte i) {
        System.out.println(" con 1 is  called ");
    }

    Overloaded(short j) {

        System.out.println(" con 2 is  called ");
    }

    /*
     * Overloaded(int n) {
     * 
     * 
     * System.out.println(" con 3 is  called ");
     * 
     * 
     * }
     */

    /*
     * Overloaded(long m) {
     * 
     * System.out.println(" con  4 is  called ");
     * 
     * 
     * }
     */

    /*
     * Overloaded(float m) {
     * 
     * System.out.println(" con  5 is  called ");
     * 
     * 
     * }
     */

    public static void main(String[] t) {
        Overloaded o = new Overloaded(127);
    }
}

错误:从int到short

的可能有损转换

3 个答案:

答案 0 :(得分:2)

表达式127不是short类型 - 而是int类型。

如果您想要一个short类型的表达式,请使用(short) 127,如:

Overloaded o = new Overloaded((short)127);

然后你的例子就可以了。

答案 1 :(得分:2)

所有数字常量默认为整数类型,当您想将整数保存到字节/短字段时,需要使用强制转换narrowing conversion进行强制转换:

(byte)127
(short)127

或者在你的情况下:

Overloaded o = new Overloaded((byte)127);

或者如果你想做空:

Overloaded o = new Overloaded((short)127);

答案 2 :(得分:-2)

以上代码不会产生错误。 它宁愿显示输出-con 3被调用。 可以在构造函数中调用短类型。 Typecast it to short

14-06-2016 12:10:pm