2016-07-13 20 views
-1

Wenn ich eine Java-Methode deklarieren,Warum java int Parameter akzeptiert pass char Wert, aber char Parameter nicht pass pass int Wert?

warum Parameter java int char Wert übergeben accept
aber char Parameter akzeptiert keine int Wert übergeben?

Zum Beispiel:

// method which : int parameter 
public static void printInt(int input) { 
    System.out.println(input); 
} 
// method which : char parameter 
public static void printChar(char input) { 
    System.out.println(input); 
} 

// main 
System.out.println("----------------------------------------"); 
printInt('a');  // print 97 [number of ASCII char 'a'] 
        // int parameter accept char value 
printChar(97);  // compilation error 
        // char parameter NOT accept int value 
System.out.println("----------------------------------------"); 
+0

@khelwood es ist, weil "int" als "breiter" als "char" angesehen wird, da es einen Bereich über den Werten hat, den es haben kann. Hinweis: 'float', das 32-Bit ist, ist breiter als' 'long' ', das ist 64-Bit. –

Antwort

1

Implicit casting

Da int groß genug ist, alle möglichen Werte für char, die automatische Guss ausgeführt wird aufzunehmen - die implizites Casting genannt wird und damit Sie müssen nichts tun, während Sie diese Methode mit char aufrufen.

Sie explizite Umwandlung verwenden:

printChar((char)97); 

Aber Vorsicht, diese gefährliche, wenn Sie sicher sind, was Sie erreichen wollen.

+0

Es gibt ein '(char) 1000' http://www.fileformat.info/info/unicode/char/3E8/index.htm Ihre erste Erklärung ist richtig, es wird kein 'int' in ein 'char' umgewandelt implizit. –

+0

@PeterLawrey und @Khelwood korrigiert, mein Fehler – Abubakkar

+0

Hinweis: 'float', die 32-Bit ist breiter als' long', das ist 64-Bit, da es einen größeren Bereich hat. Die Anzahl der Bytes ist nicht der Grund. –