Java llama a métodos sobrecargados [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Cómo JVM encuentra el método (parámetro con la coincidencia más cercana) para llamar en caso de sobrecarga de funciones 6 respuestas

Considere este segmento de código

class StockServer { 

   StockServer(String company, int Shares,double currentPrice, double cashOnHand) {}

   double buy(int numberOfShares, double pricePerShare) { 
        System.out.println("buy(int,double)"); 
        return 3.0;
   } 

   float buy(long numberOfShares, double pricePerShare) {     
        System.out.println("buy(long,double)");
        return 3.0f; 
   } 
}

Si ejecuto estas líneas de código,

StockServer a = new StockServer("",2,2.0,2);
byte b=5;
a.buy(b,2);

Los resultados serían: comprar (int, doble).

¿Quiero saber cómo el compilador decide qué método ejecutar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta