Порядок отпечатков с конкатенацией строк
Почему следующий код печатает
float called long called 20.0 21
вместо
float called 20.0 long called 21
Вот код:
public class Test5 {
static float fun(int a) {
System.out.print("float called ");
return a;
}
static long fun(long a) {
System.out.print("long called ");
return a;
}
public static void main(String[] args) {
System.out.println(fun(20) + " " + fun(21L));
}
}
2 ответа
System.out.println(fun(20)+" "+fun(21l));
передан String
это результат объединения значений, возвращаемых fun(20)
а также fun(21l)
, Таким образом, эти два метода выполняются до этого println
заявление, каждый из которых печатает свой String
,
- первый
fun(20)
печатает "float call" и возвращает 20.0 - затем
fun(21l)
печатает "долго звонил" и возвращает 21 - в конце концов
System.out.println(fun(20)+" "+fun(21l));
печатает "20,0 21"
Это пример перегрузки метода. Пример показывает, что класс может иметь несколько методов с одинаковым именем.
Некоторые другие примеры перечислены здесь: https://beginnersbook.com/2013/05/method-overloading/