0

したがって、この基本的な Java プログラムでは、

public class HelloWorld{
    public void testFunc(){
        System.out.println("Class = "+this);
    }

    @Override
    public String toString(){
        return "TEST";
    }


    public static void main(String[] args){
        int i = 5;
        HelloWorld hw = new HelloWorld();
        System.out.println("Hello, World");
        hw.testFunc();
        System.out.println(i);
    }
}  

行はSystem.out.println(i);自動的に を に変換しint iますString。String 型の引数を必要とする関数は、Java でこの変換を自動的に行うと思いました (C とは異なります)。ただし、拡張アクティビティ クラスでとして宣言されているAndroid
Toast.makeText(getApplicationContext(), i, Toast.LENGTH_SHORT).show();
でこれを試すと、起動時にアプリがクラッシュします。では、この変換は Java ではどのように機能するのでしょうか?iint

4

3 に答える 3

5

暗黙の変換ではありません。は、多くのデータ型によってpintln()オーバーロードされます。

public void println(int x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

そして、あなたの場合makeText()はそうではありません。

于 2013-08-14T05:14:10.403 に答える
2

System.out.println(int)は int を char に変換し、 を使用して int を String に変換しString.valueOf(int)ます。明示的な変換System.println((char)i)を試すと、別の結果が出力されることがわかります。それは U+0005 Unicode 文字になります。

于 2013-08-14T05:18:57.620 に答える
1

JAVA での型変換を理解するには:を参照してください。

Java プログラミング言語で記述されたすべての式には、式の構造と、式で言及されているリテラル、変数、およびメソッドの型から推定できる型があります。

ただし、式の型が適切でないコンテキストで式を記述することは可能です。場合によっては、これによりコンパイル時にエラーが発生します。 これは、Android Toast Example にも当てはまります。

それ以外の場合、コンテキストは式の型に関連する型を受け入れることができます。便宜上、プログラマが型変換を明示的に示す必要はなく、Java プログラミング言語は、式の型から周囲のコンテキストで受け入れられる型への暗黙的な変換を実行します。 そして、これは System.out.println(i) の例にも当てはまります

于 2013-08-14T05:26:46.433 に答える