4

内部作業のように、「int」が出力されるのはなぜですか。

class Test {

void Method(int i) {
    System.out.println("int");
}
void Method(String n) {
    System.out.println("string");
}

public static void main(String [] a) {
    new Test().Method('c');
    }

}
4

8 に答える 8

9

キャラクターcは にキャストされていintます。にキャストされることはありませんString

より正式には、JLS §5.5から- a から 、 、 、または への拡大変換charint行わlongfloatますdouble

が として表示されない理由Stringは、 をcharに自動ボックス化できないためStringです。

于 2013-07-09T13:48:40.833 に答える
1

一重引用符で変数を渡すと、char. 文字はint変数に変換されます。

String単に二重引用符として渡したい場合は、二重引用符を使用します。

new Test().Method("c");

プリミティブ型の特定の変換は、拡張プリミティブ変換と呼ばれます。

byte から short、int、long、float、または double

short から int、long、float、または double

char から int、long、float、または double

int から long、float、または double

フロートまたはダブルまで長い

float から double

詳細はこちら: JLS §5.1.2

于 2013-07-09T13:51:48.383 に答える
1

'c'一重引用符による文字です。プリミティブな数値 (やや) 型であるため、後者は明示的でなければならないため、文字列よりも簡単に整数にキャストされます。

Method(int i)印刷に変更してi、別の文字を試すこともできます。

于 2013-07-09T13:48:59.543 に答える
1

char実際には の数値型ですJava。コールバックを作成すると、自動的に に変換されintます。そのため、メソッドは を出力しintます。

Oracle のチュートリアルから、次のことがわかります。

char データ型は、単一の 16 ビット Unicode 文字です。最小値は '\u0000' (または 0) で、最大値は '\uffff' (または 65,535 を含む) です。

于 2013-07-09T13:49:30.950 に答える
0

Java では、文字は数字として表されます。具体的には、Java は Unicode コードポイントによって文字を表します。私が間違っていなければ、文字 'c' は Unicode 仕様の 98 番です。

を呼び出すときMethod('c')、プログラムには 2 つのメソッド シグネチャ オプションintがありStringます。'c' は本質的に数字であるため、98 にキャストintされ、数字 98 として扱われます。文字は にキャストされませんStrings

于 2013-07-09T13:58:56.713 に答える
0

charプリミティブ型で、 にキャストされますがintStringオブジェクトです。

一方、Java にはautoboxingと呼ばれる機能があり、いくつかのプリミティブ型が適切なときにオブジェクトにキャストされます (たとえば、 intto Integerbooleanto Boolean) が、 では機能しませんcharcharに自動ボックス化されCharacterます。

于 2013-07-09T13:49:15.323 に答える
0

渡すと、 ;'c'と見なされます。charを渡そうとする"c"と、 とみなされますstring

于 2013-07-09T13:50:01.783 に答える
0

'c' は文字列ではなく char 型です。'c' は (int)'c' と比較される場合があります

于 2013-07-09T13:50:02.683 に答える