2016-07-13 3 views
-1

Когда я объявляю метод Java,Почему параметр java int принимает значение pass char, но параметр char не принимает значение pass int?

почему параметр ява ИНТ принимают переданное значение обугленного
но параметр голец не принимает переданное значение INT?

Например:

// 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 это потому, что 'int' считается« более широким », чем' char' из-за диапазона над значениями, которые он может иметь. Примечание: 'float', который является 32-битным, шире' 'long', который является 64-битным. –

ответ

1

Implicit casting

С int достаточно большим, чтобы вместить все возможные значения для char, автоматическое приведение будет выполняться - которая называется неявного приведения и, следовательно, вам не нужно ничего делать при вызове этого метода с char.

Вы можете использовать явное приведение:

printChar((char)97); 

Но остерегайтесь это опасно, если вы не уверены, что вы пытаетесь достичь.

+0

Существует '(char) 1000' http://www.fileformat.info/info/unicode/char/3E8/index.htm. Ваше первое объяснение верно, оно не будет использовать' int' для 'char 'неявно. –

+0

@PeterLawrey и @ khelwood исправлены, моя ошибка – Abubakkar

+0

Примечание: 'float', который 32-бит шире, чем' long', который является 64-битным, поскольку он имеет более широкий диапазон. Количество байтов не является причиной. –

Смежные вопросы