Java整数默认为int

Java整数默认为int,java,compiler-errors,Java,Compiler Errors,我正在调用各种方法,参数整数值都默认为int,甚至是1或0之类的值,除了类型转换之外,我还应该做些什么来解决这个问题?下面是一个代码示例 public class Launch { public static void main(String[] args) { CoordinateHandler handler = new Handler(); short x = 3901; short y = 5921; byte h

我正在调用各种方法,参数整数值都默认为int,甚至是1或0之类的值,除了类型转换之外,我还应该做些什么来解决这个问题?下面是一个代码示例

public class Launch {
    public static void main(String[] args) {
        CoordinateHandler handler = new Handler();
        short x = 3901;
        short y = 5921;
        byte h = 2;
        handler.toCoordinates(x, y, h, "modern");
    }
}
public class CoordinateHandler extends CoordinateMain {
    public void toCoordinates(short absX, short absY, byte height, String type) {
        if (type.equals("modern")) {
            super.toCoordinates(absX, absY, height);
        } else {
            coordinateUpdateEvent(absX, absY, height, type);
        }
    }
}

我会得到一个编译错误,说在短x、短y和字节h行上可能会丢失精度,我还会得到一个编译错误,说toCoordinates(int、int、int、String)不能应用于toCoordinates(short、short、byte、String)

我相信JVM在内部还是使用ints作为short,因此,您可以使用它们而不是短裤。

您正在编写
CoordinateHandler handler=new handler()

您确定Handler()具有相同的方法签名吗?我认为应该是
CoordinateHandler=newcoordinateHandler()

这些行不是真的

short x = 3901;
short y = 5921;
byte h = 2;
导致任何编译器错误;后续的方法调用也是如此。这是完全合法和正确的Java。您可能没有显示导致这些问题的文本代码,例如从变量或参数赋值,而不是从文本值赋值,后者会自动转换为LHS的类型


如果您确实是从
int
参数赋值,那么编译器是非常正确的:您的赋值确实可能会导致溢出。

相信编译器-将这些短项更改为int,一切都会好的。根据-应该好的,这不应该是
公共类启动{
A literal是固定值的源代码表示形式;literal直接在代码中表示,无需计算。如下所示,可以将literal分配给原语类型的变量…short s=10000;
中的
literals
部分)-也许你的编译器处于超迂腐的模式?扔掉短代码和字节。在INT上使用它们真的没有什么好处,它们只会使事情变得更复杂。仅仅使用INT不会导致更多不必要的数据传输吗?我正在尽可能使这个程序保持稳定,它是一个客户机-服务器程序,我更喜欢people使用客户机获得最佳体验。这与JVM无关——这都是在编译时完成的,甚至在调用JVM之前。(当然,除非我误解了这个问题).但是当代码到达JVM时,它正在使用int来表示shorts,那么?
Handler
可能是一个子类-这并不是所有相关的。不知何故,我认为Handler位于所有处理程序的顶部。是的,该方法被多次调用,并且在调用该方法时指定了大多数参数的值,这是一个很少出现通过引用其他类方法来定义每个参数值的情况,但这些方法返回正确的数据类型。然后,请显示带有确切编译器错误的确切代码。我发现了它。谢谢,有一些事情修改了我没有捕获的变量。