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

Java 为什么不在构造函数中调用短数据类型,java,Java,错误:从int到short的可能有损转换表达式127不是short类型,而是int类型 Overloaded o = new Overloaded((short)127); 如果要使用类型为short的表达式,请使用(short)127,如中所示: public class Overloaded { Overloaded(byte i) { System.out.println(" con 1 is called "); } Overloaded(

错误:从int到short的可能有损转换表达式
127
不是
short
类型,而是
int
类型

Overloaded o = new Overloaded((short)127);
如果要使用类型为
short
的表达式,请使用
(short)127
,如中所示:

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);
    }
}

然后,您的示例将起作用。

默认情况下,所有数值常量都是整数类型,当您希望将整数保存到字节/短字段时,需要使用强制转换:

Overloaded o = new Overloaded((short)127);
或者在您的情况下:

(byte)127
(short)127
或者如果你想做空:

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

上面的代码不会产生错误。 它宁愿显示一个输出-con3被调用。 短类型可以在构造函数中调用。 把它打短

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

请添加解释您的问题的文本只是警告一句:短值限制在-32768到+32767之间,这意味着例如
(short)32768
将导致-32768。要获得更好的答案,请尝试进一步解释。为什么它不会产生错误,为什么你的答案会有效。