Порядок отпечатков с конкатенацией строк

Почему следующий код печатает

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/

Другие вопросы по тегам