2015-06-22 3 views
0

, так что у меня есть этот фрагмент кода. Кто-нибудь достаточно, чтобы объяснить мне, почему он возвращает версию int, а не String?Почему char возвращает int

class Student13 
     { 
     void myMethod(int i) {System.out.println("int version");} 
     void myMethod(String s) {System.out.println("String version");} 
     public static void main(String args[]) 
     { 
       Student13 obj = new Student13(); 
       char ch = 'c'; 
       obj.myMethod(ch); 
     } 
    } 
+0

Читайте раздел 5.1.2: https://docs.oracle.com/javase/specs/jls/se7 /html/jls-5.html –

ответ

2

Расширение char к int является одним из основных расширения примитивных преобразований, указанных в Java Language Spec 5.1.2. Это преобразование встроено в язык на базовом уровне.

С другой стороны, нет никакого прямого преобразования между char и String, и если у вас не было перегрузки int, ваш код будет не компилироваться. char должно быть явно преобразовано в String, путем объединения "", используя Character.toString или другую технику.

0

char, кроме того, некоторые сахаристы на том, как они напечатаны, по существу представляют собой целочисленный тип. При поиске подходящего метода char можно расширить до int, long, float, или double, и может быть автобоксирован до java.lang.Character. Однако он не может быть преобразован в java.lang.String. Если это поведение, которое вы хотите, вы должны сделать это явно на своем, например:

public static void main(String args[]) 
{ 
     Student13 obj = new Student13(); 
     char ch = 'c'; 
     obj.myMethod(String.valueOf(ch)); 
}