Пример кода:
public class OverloadingTest {
public static void test(Object obj){
System.out.println("Object called");
}
public static void test(String obj){
System.out.println("String called");
}
public static void main(String[] args){
test(null);
System.out.println("10%2==0 is "+(10%2==0));
test((10%2==0)?null:new Object());
test((10%2==0)?null:null);
}
И вывод:
Строка с именем
10% 2 == 0 верно
Объект под названием
Строка с именем
Первый вызов test (null)
вызывает метод с аргументом String
, что понятно согласно Спецификации языка Java
.
1) Кто-нибудь может объяснить мне, на каком основании test ()
вызывается в предыдущих вызовах?
2) Опять же, когда мы помещаем, скажем, условие if
:
if(10%2==0){
test(null);
}
else
{
test(new Object());
}
Он всегда вызывает метод с аргументом String
.
Будет ли компилятор вычислять выражение (10% 2)
во время компиляции? Я хочу знать, вычисляются ли выражения во время компиляции или во время выполнения. Спасибо.