2016-07-13 2 views
-1

なぜjavaのintパラメータはパスのchar値を受け入れますが、charパラメータは受け入れられませんpass int value?私はJavaのメソッドを宣言すると

はなぜJavaのint型のパラメータが渡されたchar値
を受け入れないが、char型のパラメータが渡された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'よりも「広い」と考えられるからです。注意:32ビットの 'float'は64ビットの' long'よりも広いです。 –

答えて

1

Implicit casting

intchar可能なすべての値を収容するのに十分な大きさですので、自動キャストが行われることになる - 暗黙的キャストと呼ばれ、ひいてはれますそのメソッドをcharで呼び出すときに何もする必要はありません。

あなたは明示的なキャストを使用できます。

printChar((char)97); 

をしかし、あなたはあなたが達成しようとしているのかわからない限り、この危険を注意してください。

+0

'(char)1000'があります。http://www.fileformat.info/info/unicode/char/3E8/index.htmあなたの最初の説明は正しく、' int'を 'char 'にキャストしません'暗黙のうちに。 –

+0

@PeterLawreyと@ khelwoodを修正しました。私の間違いです。 – Abubakkar

+0

注:32ビットである 'float'は、' long'よりも広く、64ビットです。バイト数が理由ではありません。 –

関連する問題